JavaScript를 사용하여 문자열에서 각 단어의 첫 글자를 대문자로 바꾸려면 어떻게해야합니까?


117

문자열에서 모든 단어의 첫 글자를 대문자로 바꾸는 함수를 작성하려고합니다 (문자열을 제목 케이스로 변환).

예를 들어 입력이 "I'm a little tea pot"이면 "I'm A Little Tea Pot"출력이 될 것으로 예상 합니다. 그러나이 함수는 "i'm a little tea pot".

이것은 내 코드입니다.

function titleCase(str) {
  var splitStr = str.toLowerCase().split(" ");

  for (var i = 0; i < splitStr.length; i++) {
    if (splitStr.length[i] < splitStr.length) {
      splitStr[i].charAt(0).toUpperCase();
    }

    str = splitStr.join(" ");
  }

  return str;
}

console.log(titleCase("I'm a little tea pot"));


그것은 단지 문자열의 첫 글자를 대문자로 쓰는 것처럼 보이지 않습니다. 또는 문자열에 포함 된 각 단어를 대문자로 표시 하시겠습니까?
epascarello 2015 년

2
결과에 대문자를 사용하는 splitStr[i].charAt(0).toUpperCase();것이 아니라 void. 당신이 할 필요가splitStr[i] = splitStr[i].charAt(0).toUpperCase() + splitStr[i].substring(1);
somethinghere

1
먼저 알려 주셔야합니다. 무엇 이며 그 함수 문제는? 예상되는 결과는 무엇이며 대신 무엇을 반환합니까?
Sebastian Simon

이 함수는 모든 단어의 첫 번째 문자를 대문자로 바꾸는 것처럼 보입니다.
Halcyon 2015 년

3
제목에서 알 수 있듯이 문자열에서 각 단어의 첫 글자를 대문자로 바꾸려고합니다. 나는 본질적으로지지해야하는 포럼에 대한 반대표 나 부정에 대해 감사하지 않습니다. @somethinghere-응답 해 주셔서 감사합니다.
slurrr 2015 년

답변:


166

변경 사항을 어레이에 다시 할당하지 않으므로 모든 노력이 헛된 것입니다. 이 시도:

function titleCase(str) {
   var splitStr = str.toLowerCase().split(' ');
   for (var i = 0; i < splitStr.length; i++) {
       // You do not need to check if i is larger than splitStr length, as your for does that for you
       // Assign it back to the array
       splitStr[i] = splitStr[i].charAt(0).toUpperCase() + splitStr[i].substring(1);     
   }
   // Directly return the joined string
   return splitStr.join(' '); 
}

document.write(titleCase("I'm a little tea pot"));


@Halcyon 그것은 각 단어에 대해 하나의 문자를 생성합니다.
epascarello 2015 년

15
es6에서는 좀 더 멋지게 보일 수 있습니다.myStr.toLowerCase().split(' ').map(word => word.charAt(0).toUpperCase() + word.substring(1)).join(' ');
Patrick Michaelsen

1
@PatrickMichaelsen 실제로 할 수 있습니다. 나는 대답을 바꾸지 않을 것이다. 2015 년부터는 시간이 바뀌 었다는 것을 알고 있지만 후대를 위해 계속할 것이다. 또한, 나는 더 이상 이렇게 쓰지 않을 것입니다. :) 그러나 당신의 대답을 내 생각에 자유롭게 게시하십시오.
somethinghere

1
예, 동의합니다. 현재 답변은 괜찮습니다. 그래서 단순히 새로운 방문자를 참조하기 위해 댓글에 넣었습니다.
Patrick Michaelsen

1
3 개의 경쟁자 기능에 대해이 기능의 벤치 마크를 실행 한 결과 가장 성능이 우수한 것으로 나타났습니다 (최악의 경쟁자 (Chrome 73) 실행 시간의 1/3 미만). jsben.ch/AkHgP
Michael Thompson

92

당신은 복잡한 것을 매우 쉽게 만들고 있습니다. CSS에 다음을 추가 할 수 있습니다.

.capitalize {
    text-transform: capitalize;
}

자바 스크립트에서는 요소에 클래스를 추가 할 수 있습니다.

 document.getElementById("element").className = "capitalize";

@epascarello 이해가 안 돼요, 무슨 말씀 이세요?
Marcos Pérez Gude 2015 년

질문은 "이 기능에 어떤 문제가 있습니까?"입니다. 그렇지 않으면 stackoverflow.com/questions/1026069/… 또는 stackoverflow.com/questions/196972/…와
Hacketo

2
답장을 보내 주셔서 감사합니다.하지만 저는 연습을 위해 자바 스크립트를 사용하여이 작업을 수행하려고합니다 @ MarcosPérezGude
slurrr

1
네, 진짜 다양한입니다
마르코스 페레스 Gude

3
불행히도 값이 20mm이고 대문자를 사용하면 20Mm이되는 경우도 있습니다. 경우에 따라 자바 스크립트가 유일한 방법 일 수 있습니다.
Buts

79

ECMAScript 6 버전 :

const toTitleCase = (phrase) => {
  return phrase
    .toLowerCase()
    .split(' ')
    .map(word => word.charAt(0).toUpperCase() + word.slice(1))
    .join(' ');
};

let result = toTitleCase('maRy hAd a lIttLe LaMb');
console.log(result);


1
나는 또한 toLowerCase()사용자 또는 문자열이 대소 문자가 혼합 된 경우를 대비하여 처음 에는 누락되었다고 생각합니다 .
ArchNoob

45

이 방법이 더 빨라야한다고 생각합니다. 문자열을 분할하고 다시 결합하지 않기 때문입니다. 정규식을 사용합니다.

var str = text.replace(/(^\w{1})|(\s{1}\w{1})/g, match => match.toUpperCase());

설명 :

  1. (^\w{1}): 문자열의 첫 번째 문자와 일치
  2. |: 또는
  3. (\s{1}\w{1}): 하나의 공백 뒤에 오는 하나의 문자와 일치
  4. g: 모두 일치
  5. match => match.toUpperCase () : 바꾸기는 함수를 가질 수 있으므로; 일치를 대문자 일치로 교체

1
훨씬 더 깨끗해!
Cliff Hall

\s{1}? 내가 말하고 싶지만 \s+그래서 단어 사이에 여러 공백에도 작동
크리스티안 Traìna

나의 경우에는; 정확히 1 칸이고 그렇습니다. 작동합니다!
nimeresam

문자열은 변경할 수 없습니다. 정규식은 후드 아래에서 분할 및 결합됩니다. 실제로 주위에 방법이 없습니다.
bluegrounds

24

타사 라이브러리를 사용할 수 있다면 Lodash 에는 도우미 기능이 있습니다.

https://lodash.com/docs/4.17.3#startCase

_.startCase('foo bar');
// => 'Foo Bar'

_.startCase('--foo-bar--');
// => 'Foo Bar'

_.startCase('fooBar');
// => 'Foo Bar'

_.startCase('__FOO_BAR__');
// => 'FOO BAR'
<script src="https://cdn.jsdelivr.net/lodash/4.17.3/lodash.min.js"></script>


19

ECMAScript 6에서 화살표 기능을 사용한 한 줄 답변 :

const captialize = words => words.split(' ').map( w =>  w.substring(0,1).toUpperCase()+ w.substring(1)).join(' ')

3
좋은! w[0]더 짧게 만들 수 있습니다 . 정규식과 달리 ..뿐만 아니라 모든 기호로 쉽게 확장 할 수 있습니다 space. 내 말은 ( [ "이 기호 뒤에 문자를 대문자로 표기해야하기 때문입니다. 솔루션에 감사드립니다!
Systems Rebooter

17

최단 원 라이너 (매우 빠름) :

 text.replace(/(^\w|\s\w)/g, m => m.toUpperCase());

설명:

  • ^\w : 문자열의 첫 번째 문자
  • | : 또는
  • \s\w : 공백 뒤의 첫 문자
  • (^\w|\s\w) 패턴을 캡처하십시오.
  • g 플래그 : 모든 항목과 일치합니다.

나머지가 소문자인지 확인하려면 다음을 수행하십시오.

text.replace(/(^\w|\s\w)(\S*)/g, (_,m1,m2) => m1.toUpperCase()+m2.toLowerCase())

이것은 끔찍합니다! RegEx가 최고입니다. 이 부분이하는 일에 대해 더 자세히 설명 할 수 있습니까? m => m.toUpperCase()
marcin2x4

1
@ marcin2x4 m는 첫 번째 문자와 일치하므로 첫 번째 문자를 대문자로 만듭니다.

12

ECMAScript 6 버전 :

title
    .split(/ /g).map(word =>
        `${word.substring(0,1).toUpperCase()}${word.substring(1)}`)
    .join(" ");

6
지금은 이걸 봤고 꽤 깔끔하지만. " "대신 a 를 사용하여 가입해야한다고 생각합니다 "". 그렇지 않으면 하나의 큰 단어를 얻을 수 있습니다.
somethinghere

9

𝗙𝗮𝘀𝘁𝗲𝘀𝘁 𝗦𝗼𝗹𝘂𝘁𝗶𝗼𝗻 𝗙𝗼𝗿 𝗟𝗶𝗝𝗲𝗶𝗲𝗶𝗲𝗶𝘁𝗶𝗻-

정규식 함수를 사용하여 각 문자의 대소 문자를 변경할 수 있습니다. V8 JIST 최적화를 사용하면 빠르고 메모리 효율적임이 입증되어야합니다.

// Only works on Latin-I strings
'tHe VeRy LOOong StRINg'.replace(/\b[a-z]|['_][a-z]|\B[A-Z]/g, function(x){return x[0]==="'"||x[0]==="_"?x:String.fromCharCode(x.charCodeAt(0)^32)})

또는 함수로 :

// Only works for Latin-I strings
var fromCharCode = String.fromCharCode;
var firstLetterOfWordRegExp = /\b[a-z]|['_][a-z]|\B[A-Z]/g;
function toLatin1UpperCase(x){ // avoid frequent anonymous inline functions
    var charCode = x.charCodeAt(0);
    return charCode===39 ? x : fromCharCode(charCode^32);
}
function titleCase(string){
    return string.replace(firstLetterOfWordRegExp, toLatin1UpperCase);
}

이 벤치 마크 에 따르면 코드는 Chrome의 차선책보다 33 % 이상 빠릅니다.


𝗗𝗲𝗺𝗼

<textarea id="input" type="text">I'm a little tea pot</textarea><br /><br />
<textarea id="output" type="text" readonly=""></textarea>
<script>
(function(){
    "use strict"
    var fromCode = String.fromCharCode;
    function upper(x){return x[0]==="'"?x:fromCode(x.charCodeAt(0) ^ 32)}
    (input.oninput = function(){
      output.value = input.value.replace(/\b[a-z]|['_][a-z]|\B[A-Z]/g, upper);
    })();
})();
</script>


다음과 같이 함수에 return을 추가하는 것을 잊었습니다. function autoCaps (string) {return string.replace (/ \ b [az] | \ B [AZ] / g, function (x) {return String.fromCharCode (x.charCodeAt (0) ^ 32);}); }
Archy

@Archy 수정 해 주셔서 감사합니다. 귀하가 제안한 변경 사항을 적용했습니다.
Jack Giffin


6

또한 좋은 옵션 (특히 freeCodeCamp를 사용하는 경우 ) :

function titleCase(str) {
  var wordsArray = str.toLowerCase().split(/\s+/);
  var upperCased = wordsArray.map(function(word) {
    return word.charAt(0).toUpperCase() + word.substr(1);
  });
  return upperCased.join(" ");
}

5

이 루틴은 아포스트로피가있는 하이픈 단어와 단어를 처리합니다.

function titleCase(txt) {
    var firstLtr = 0;
    for (var i = 0;i < text.length;i++) {
        if (i == 0 &&/[a-zA-Z]/.test(text.charAt(i)))
            firstLtr = 2;
        if (firstLtr == 0 &&/[a-zA-Z]/.test(text.charAt(i)))
            firstLtr = 2;
        if (firstLtr == 1 &&/[^a-zA-Z]/.test(text.charAt(i))){
            if (text.charAt(i) == "'") {
                if (i + 2 == text.length &&/[a-zA-Z]/.test(text.charAt(i + 1)))
                    firstLtr = 3;
                else if (i + 2 < text.length &&/[^a-zA-Z]/.test(text.charAt(i + 2)))
                    firstLtr = 3;
            }
        if (firstLtr == 3)
            firstLtr = 1;
        else
            firstLtr = 0;
        }
        if (firstLtr == 2) {
            firstLtr = 1;
            text = text.substr(0, i) + text.charAt(i).toUpperCase() + text.substr(i + 1);
        }
        else {
            text = text.substr(0, i) + text.charAt(i).toLowerCase() + text.substr(i + 1);
        }
    }
}

titleCase("pAt o'Neil's");
// returns "Pat O'Neil's";

4
function LetterCapitalize(str) { 
  return str.split(" ").map(item=>item.substring(0,1).toUpperCase()+item.substring(1)).join(" ")
}

4

let cap = (str) => {
  let arr = str.split(' ');
  arr.forEach(function(item, index) {
    arr[index] = item.replace(item[0], item[0].toUpperCase());
  });

  return arr.join(' ');
};

console.log(cap("I'm a little tea pot"));

Fast Readable 버전은 벤치 마크 http://jsben.ch/k3JVz 참조 여기에 이미지 설명 입력


4

ES6 구문

const captilizeAllWords = (sentence) => {
  if (typeof sentence !== "string") return sentence;
  return sentence.split(' ')
    .map(word => word.charAt(0).toUpperCase() + word.slice(1))
    .join(' ');
}


captilizeAllWords('Something is going on here')

나머지 부분이 대문자가 아닌지 확인하기 위해 word.slice (1)을 word.slice (1) .toLowerCase ()로 바꿔야하지 않습니까?
Anton Krug

4

당신의 삶을 훨씬 더 쉽게 만들어주는 현대적인 JS 문법을 사용할 수 있습니다. 주어진 문제에 대한 내 코드 스 니펫은 다음과 같습니다.

const capitalizeString = string => string.split(' ').map(item => item.replace(item.charAt(0), item.charAt(0).toUpperCase())).join(' ');
capitalizeString('Hi! i am aditya shrivastwa')


3

나는 일반적으로 가독성 때문에 regexp를 사용하지 않는 것을 선호하며 루프에서 벗어나려고 노력합니다. 나는 이것이 일종의 읽을 수 있다고 생각합니다.

function capitalizeFirstLetter(string) {
    return string && string.charAt(0).toUpperCase() + string.substring(1);
};

3

아래 함수는 모든 단어의 첫 글자를 모두 변환하는 것 외에 문자열의 다른 부분을 변경하지 않습니다 (즉, 정규식 정의에 의해 \w+ )를 대문자 .

즉 , 단어를 반드시 Titlecase로 변환 하는 것은 아니지만 질문의 제목이 "문자열에서 각 단어의 첫 글자를 대문자로-JavaScript"를 정확히 수행합니다.

  • 문자열을 분할하지 마십시오
  • 다음 과 같은 정규식으로 각 단어 를 결정 \w+합니다.[A-Za-z0-9_]+
    • String.prototype.toUpperCase()각 단어의 첫 번째 문자에만 기능을 적용합니다 .
function first_char_to_uppercase(argument) {
  return argument.replace(/\w+/g, function(word) {
    return word.charAt(0).toUpperCase() + word.slice(1);
  });
}

예 :

first_char_to_uppercase("I'm a little tea pot");
// "I'M A Little Tea Pot"
// This may look wrong to you, but was the intended result for me
// You may wanna extend the regex to get the result you desire, e.g., /[\w']+/

first_char_to_uppercase("maRy hAd a lIttLe LaMb");
// "MaRy HAd A LIttLe LaMb"
// Again, it does not convert words to Titlecase

first_char_to_uppercase(
  "ExampleX: CamelCase/UPPERCASE&lowercase,exampleY:N0=apples"
);
// "ExampleX: CamelCase/UPPERCASE&Lowercase,ExampleY:N0=Apples"

first_char_to_uppercase("…n1=orangesFromSPAIN&&n2!='a sub-string inside'");
// "…N1=OrangesFromSPAIN&&N2!='A Sub-String Inside'"

first_char_to_uppercase("snake_case_example_.Train-case-example…");
// "Snake_case_example_.Train-Case-Example…"
// Note that underscore _ is part of the RegEx \w+

first_char_to_uppercase(
  "Capitalize First Letter of each word in a String - JavaScript"
);
// "Capitalize First Letter Of Each Word In A String - JavaScript"

2019-02-07 편집 : 실제 Titlecase를 원하는 경우 (즉, 첫 글자 만 대문자로, 나머지는 소문자로) :

function titlecase_all_words(argument) {
  return argument.replace(/\w+/g, function(word) {
    return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
  });
}

둘 다 보여주는 예 :

test_phrases = [
  "I'm a little tea pot",
  "maRy hAd a lIttLe LaMb",
  "ExampleX: CamelCase/UPPERCASE&lowercase,exampleY:N0=apples",
  "…n1=orangesFromSPAIN&&n2!='a sub-string inside'",
  "snake_case_example_.Train-case-example…",
  "Capitalize First Letter of each word in a String - JavaScript"
];
for (el in test_phrases) {
  let phrase = test_phrases[el];
  console.log(
    phrase,
    "<- input phrase\n",
    first_char_to_uppercase(phrase),
    "<- first_char_to_uppercase\n",
    titlecase_all_words(phrase),
    "<- titlecase_all_words\n "
  );
}

// I'm a little tea pot <- input phrase
// I'M A Little Tea Pot <- first_char_to_uppercase
// I'M A Little Tea Pot <- titlecase_all_words

// maRy hAd a lIttLe LaMb <- input phrase
// MaRy HAd A LIttLe LaMb <- first_char_to_uppercase
// Mary Had A Little Lamb <- titlecase_all_words

// ExampleX: CamelCase/UPPERCASE&lowercase,exampleY:N0=apples <- input phrase
// ExampleX: CamelCase/UPPERCASE&Lowercase,ExampleY:N0=Apples <- first_char_to_uppercase
// Examplex: Camelcase/Uppercase&Lowercase,Exampley:N0=Apples <- titlecase_all_words

// …n1=orangesFromSPAIN&&n2!='a sub-string inside' <- input phrase
// …N1=OrangesFromSPAIN&&N2!='A Sub-String Inside' <- first_char_to_uppercase
// …N1=Orangesfromspain&&N2!='A Sub-String Inside' <- titlecase_all_words

// snake_case_example_.Train-case-example… <- input phrase
// Snake_case_example_.Train-Case-Example… <- first_char_to_uppercase
// Snake_case_example_.Train-Case-Example… <- titlecase_all_words

// Capitalize First Letter of each word in a String - JavaScript <- input phrase
// Capitalize First Letter Of Each Word In A String - JavaScript <- first_char_to_uppercase
// Capitalize First Letter Of Each Word In A String - Javascript <- titlecase_all_words

3
function titleCase(str) {

    var myString = str.toLowerCase().split(' ');
    for (var i = 0; i < myString.length; i++) {
        var subString = myString[i].split('');
        for (var j = 0; j < subString.length; j++) {
            subString[0] = subString[0].toUpperCase();
        }
        myString[i] = subString.join('');
    }

    return myString.join(' ');
}

1
답변에 몇 가지 의견을 추가하십시오.
HDJEMAI

3

또는 replace ()를 사용하여 수행하고 각 단어의 첫 글자를 "upperCase"로 바꿀 수 있습니다.

function titleCase(str) {
    return str.toLowerCase().split(' ').map(function(word) {
               return word.replace(word[0], word[0].toUpperCase());
           }).join(' ');
}

titleCase("I'm a little tea pot");

2

map기본적으로 함수를 사용하여 수행 할 수있는 방법 은 다음과 같습니다. 수락 된 답변과 동일하지만 for-loop. 따라서 몇 줄의 코드를 절약 할 수 있습니다.

function titleCase(text) {
  if (!text) return text;
  if (typeof text !== 'string') throw "invalid argument";

  return text.toLowerCase().split(' ').map(value => {
    return value.charAt(0).toUpperCase() + value.substring(1);
  }).join(' ');
}

console.log(titleCase("I'm A little tea pot"));


2

다음은 문자열에서 각 단어의 첫 번째 알파벳을 대문자로 표시하는 또 다른 방법입니다.

를 사용하여 String 개체에 대한 사용자 지정 메서드를 만듭니다 prototype.

String.prototype.capitalize = function() {
    var c = '';
    var s = this.split(' ');
    for (var i = 0; i < s.length; i++) {
        c+= s[i].charAt(0).toUpperCase() + s[i].slice(1) + ' ';
    }
    return c;
}
var name = "john doe";
document.write(name.capitalize());

1

@somethingthere가 제안한 솔루션의보다 간결하고 현대적인 재 작성 :

let titleCase = (str => str.toLowerCase().split(' ').map(
                c => c.charAt(0).toUpperCase() + c.substring(1)).join(' '));
    
document.write(titleCase("I'm an even smaller tea pot"));


1

원시 코드 :

function capi(str) {
    var s2 = str.trim().toLowerCase().split(' ');
    var s3 = [];
    s2.forEach(function(elem, i) {
        s3.push(elem.charAt(0).toUpperCase().concat(elem.substring(1)));
    });
    return s3.join(' ');
}
capi('JavaScript string exasd');

좀 더 자세한 정보를 제공해야합니다 (무엇이 잘못 되었나요?)
hering

1

replace()정규 표현식과 함께 사용 했습니다.

function titleCase(str) {

  var newStr = str.toLowerCase().replace(/./, (x) => x.toUpperCase()).replace(/[^']\b\w/g, (y) => y.toUpperCase());

  console.log(newStr);
}

titleCase("I'm a little tea pot")

1

완전하고 간단한 솔루션이 여기에 있습니다.

String.prototype.replaceAt=function(index, replacement) {
        return this.substr(0, index) + replacement+ this.substr(index
  + replacement.length);
}
var str = 'k j g           u              i l  p';
function capitalizeAndRemoveMoreThanOneSpaceInAString() {
    for(let i  = 0; i < str.length-1; i++) {
        if(str[i] === ' ' && str[i+1] !== '')
            str = str.replaceAt(i+1, str[i+1].toUpperCase());
    }
    return str.replaceAt(0, str[0].toUpperCase()).replace(/\s+/g, ' ');
}
console.log(capitalizeAndRemoveMoreThanOneSpaceInAString(str));

이 메서드가 호출 될 때마다 String.prototype을 수정하는 이유는 무엇입니까? 한 번만 해야 할 일이 있다면 내장 된 프로토 타입을 절대 건드리지 않는 것이 좋습니다 . 그건 안돼요 ...
somethinghere

1
let str = "I'm a little tea pot";

str = str.toLowerCase();

text-transform: capitalize;각 요소 에 css 속성 을 추가 합니다.


0

아래 코드를 확인하세요.

function titleCase(str) {
  var splitStr = str.toLowerCase().split(' ');
  var nstr = ""; 
  for (var i = 0; i < splitStr.length; i++) {
    nstr +=  (splitStr[i].charAt(0).toUpperCase()+ splitStr[i].slice(1) + " 
    ");
  }
  console.log(nstr);
}

var strng = "this is a new demo for checking the string";
titleCase(strng);

2
제한적이고 즉각적인 도움을 제공 할 수있는이 코드 스 니펫에 감사드립니다. 적절한 설명은 크게 장기 가치를 향상 할 보여줌으로써 이 문제에 대한 좋은 해결책이고, 다른 유사한 질문을 미래의 독자들에게 더 유용 할 것입니다. 제발 편집 당신이 만든 가정 등 일부 설명을 추가 할 답변을.
iBug

0

ECMA2017 또는 ES8 기준

const titleCase = (string) => {
  return string
    .split(' ')
    .map(word => word.substr(0,1).toUpperCase() + word.substr(1,word.length))
    .join(' ');
};

let result = titleCase('test test test');
console.log(result);

설명 :
1. 먼저 "test test test"문자열을 "titleCase"함수에 전달합니다.
2. 공백을 기준으로 문자열을 분할하여 첫 번째 함수 "split"의 결과는 [ "test", "test", "test"]가됩니다.
3. 배열을 얻었으므로 각 단어를 조작하기 위해 map 함수를 사용했습니다. 배열에서. 첫 번째 문자를 대문자로하고 나머지 문자를 추가합니다.
4. 마지막으로 문자열을 sapce로 분할 할 때 공백을 사용하여 배열을 결합합니다.


나는 당신이 분할하기 전에 처음에 무언가를 놓치고 있다고 생각합니다 toLowerCase().
ArchNoob

@ArchNoob, 예, 분할 전에 toLowerCase ()를 추가 할 수 있습니다. 그러나 "teSt test"입력에 대해 "TeSt Test"출력을 원하는 경우와 같은 사용 사례에 전적으로 의존합니다.이 경우에는 toLowerCase ()를 추가 할 수 없습니다.
Pulkit Aggarwal

0

function titleCase(str) {
  //First of all, lets make all the characters lower case
  let lowerCaseString = "";
  for (let i = 0; i < str.length; i++) {
    lowerCaseString = lowerCaseString + str[i].toLowerCase();
  }
  //Now lets make the first character in the string and the character after the empty character upper case and leave therest as it is
  let i = 0;
  let upperCaseString = "";
  while (i < lowerCaseString.length) {
    if (i == 0) {
      upperCaseString = upperCaseString + lowerCaseString[i].toUpperCase();
    } else if (lowerCaseString[i - 1] == " ") {
      upperCaseString = upperCaseString + lowerCaseString[i].toUpperCase();
    } else {
      upperCaseString = upperCaseString + lowerCaseString[i];
    }
    i = i + 1;
  }
  console.log(upperCaseString);

  return upperCaseString;
}

titleCase("hello woRLD");

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.