JavaScript에서 문자열의 첫 문자를 대문자로 만들려면 어떻게합니까?


14 Answers

보다 객체 지향적 인 접근 방식 :

String.prototype.capitalize = function() {
    return this.charAt(0).toUpperCase() + this.slice(1);
}

그리고:

"hello world".capitalize();  =>  "Hello world" 
Question

어떻게 문자열의 첫 글자를 대문자로 만들지 만 다른 글자의 대문자는 바꾸지 않습니까?

예 :

  • "this is a test" -> "This is a test"
  • "the Eiffel Tower" -> "The Eiffel Tower"
  • "/index.html" -> "/index.html"



다음은 문자열을 배열로 처리하여 첫 번째 문자를 얻는 일반적인 대답의 단축 버전입니다.

function capitalize(s)
{
    return s[0].toUpperCase() + s.slice(1);
}

최신 정보:

아래 코멘트에 따르면 IE 7 이하에서는 작동하지 않습니다.

업데이트 2 :

빈 문자열에 대해 undefined 않도록하려면 (아래 @njzk2 주석 참조 ) 빈 문자열을 확인할 수 있습니다.

function capitalize(s)
{
    return s && s[0].toUpperCase() + s.slice(1);
}



가장 좋아하는 RegExp 중 하나를 사용하여 첫 번째 캐릭터를 얻을 수 있습니다. 귀여운 스마일처럼 보입니다. /^./

String.prototype.capitalize = function () {
  return this.replace(/^./, function (match) {
    return match.toUpperCase();
  });
};

그리고 모든 커피 마약 중독자를 위해 :

String::capitalize = ->
  @replace /^./, (match) ->
    match.toUpperCase()

... 원시 프로토 타입을 확장하지 않고도이를 수행하는 더 좋은 방법이 있다고 생각하는 모든 사람들을 위해 :

var capitalize = function (input) {
  return input.replace(/^./, function (match) {
    return match.toUpperCase();
  });
};



대문자로 된 텍스트를 다시 포맷하려면 다른 예제를 다음과 같이 수정해야합니다.

function capitalize (text) {
    return text.charAt(0).toUpperCase() + text.slice(1).toLowerCase();
}

이렇게하면 다음 텍스트가 변경됩니다.

TEST => Test
This Is A TeST => This is a test



이 솔루션 체크 아웃 :

var stringVal = 'master';
stringVal.replace(/^./, stringVal[0].toUpperCase()); // returns Master 



그것은 CSS에서 쉬워 보인다 :

<style type="text/css">
    p.capitalize {text-transform:capitalize;}
</style>
<p class="capitalize">This is some text.</p>

이것은 CSS text-transform 속성 ( W3Schools )에서 가져온 것입니다.




CSS 만

p::first-letter {
  text-transform: uppercase;
}
  • ::first-letter 라고 불리지 만 첫 번째 문자에 적용됩니다. 즉, 문자열 %a 의 경우이 선택자는 % 적용되며 대문자로 변환되지 않습니다.
  • IE9 + 또는 IE5.5 +에서는 단 하나의 콜론 ( :first-letter ) 만있는 레거시 표기법에서 지원됩니다.

ES2015 한 줄 짜기

원래의 문제를 효율적으로 해결할 수있는 ES2015에는 여러 가지 답변이 없으므로 다음과 같은 내용을 생각해 냈습니다.

const capitalizeFirstChar = str => str.charAt(0).toUpperCase() + str.substring(1);

비고

  • parameters => function화살표 함수 라고 합니다 .
  • OP는 capitalizeFirstChar 대신에 capitalizeFirstLetter 라는 이름을 사용했습니다. 왜냐하면 OP는 전체 문자열에서 첫 번째 문자를 대문자로 사용하는 코드를 요구하지 않았기 때문에 첫 번째 문자 (물론 문자 일 경우)를 요구했기 때문입니다.
  • constcapitalizeFirstChar 를 상수로 선언 할 수있는 능력을 제공합니다. 프로그래머가 항상 명시 적으로 의도를 명시해야하기 때문에 필요합니다.
  • 내가 수행 한 벤치 마크에서 string.charAt(0)string[0] 사이에는 큰 차이가 없었습니다. 그러나 string[0] 은 빈 문자열에 대해서는 undefined 되어 있지 않으므로 string && string[0] 으로 다시 작성해야합니다. 이는 너무 길기 때문에 대안과 비교할 수 있습니다.
  • string.substring(1)string.substring(1) 보다 빠릅니다.

기준

  • 이 용액의 경우 4,956,962 ops / s ± 3.03 %
  • 가장 많은 투표 응답에 대해 4,577,946 회의 / s ± 1.2 %.
  • Google 크롬 57에서 JSBench.me 생성되었습니다.




underscore.js 또는 Lo-Dash 를 사용하는 경우 underscore.string 라이브러리는 capitalize를 비롯한 문자열 확장을 제공합니다.

_.capitalize (string) 문자열의 첫 번째 문자를 대문자로 변환합니다.

예:

_.capitalize("foo bar") == "Foo bar"



ucfirst 함수는 이렇게하면 작동합니다.

function ucfirst(str) {
    var firstLetter = str.slice(0,1);
    return firstLetter.toUpperCase() + str.substring(1);
}

감사합니다.




// Uppercase first letter
function ucfirst(field) {
    field.value = field.value.substr(0, 1).toUpperCase() + field.value.substr(1);
}

용법:

<input type="text" onKeyup="ucfirst(this)" />



다른 경우에는 첫 글자를 대문자로 바꾸고 나머지는 소문자로 사용해야합니다. 다음과 같은 경우에이 기능을 변경할 수 있습니다.

//es5
function capitalize(string) {
    return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();
}
capitalise("alfredo")  // => "Alfredo"
capitalise("Alejandro")// => "Alejandro
capitalise("ALBERTO")  // => "Alberto"
capitalise("ArMaNdO")  // => "Armando"

// es6 using destructuring 
const capitalize = ([first,...rest]) => first.toUpperCase() + rest.join('').toLowerCase();



var str = "test string";
str = str.substring(0,1).toUpperCase() + str.substring(1);






var string = "hello world";
string = string.charAt(0).toUpperCase() + string.slice(1);
alert(string);



이런 식으로 한 줄에서 할 수 있습니다.

string[0].toUpperCase() + string.substring(1)



Related