변수의 첫 글자 대문자


답변:


227

단어를 시작하는 소문자를 대문자로 바꾸 려면 .replace[MDN] 기능을 사용하십시오 .

var str = "hello world";
str = str.toLowerCase().replace(/\b[a-z]/g, function(letter) {
    return letter.toUpperCase();
});
alert(str); //Displays "Hello World"


편집 : az 이외의 단어 문자를 다루는 경우 다음 (더 복잡한) 정규식이 용도에 더 적합 할 수 있습니다.

var str = "петр данилович björn über ñaque αλφα";
str = str.toLowerCase().replace(/^[\u00C0-\u1FFF\u2C00-\uD7FF\w]|\s[\u00C0-\u1FFF\u2C00-\uD7FF\w]/g, function(letter) {
    return letter.toUpperCase();
});
alert(str); //Displays "Петр Данилович Björn Über Ñaque Αλφα"


1
이름이 같은이 작동하지 않는 Björn Lüchinger,이된다 BjöRn LüChinger. 이것에 대한 수정 사항이 있습니까?
Dediqated

2
@Dediqated 지적 해 주셔서 감사합니다. 수정이 도움이되는지 알려주세요.
Peter Olson

잘 작동합니다! 문자열의 첫 번째 문자를 대문자로 변환하려는 경우 수정해야 할 사항에 대한 힌트가 있습니까? (대신 모든 단어의)
안드레스 SK

6
@andufo 물론입니다. 실제로 훨씬 간단합니다. 그냥 사용str[0].toUpperCase() + str.slice(1)
피터 올슨

@ PeterOlson 답변 주셔서 감사합니다! 나는 var first = str.slice(0, str.indexOf(' ')); str = first.toLowerCase().replace(/^[\u00C0-\u1FFF\u2C00-\uD7FF\w]|\s[\u00C0-\u1FFF\u2C00-\uD7FF\w]/g, function(letter) { return letter.toUpperCase(); }) + str.substr(first.length);특수 문자도 다루기 위해 사용 을 끝냈다 .
안드레스 SK

72

훨씬 쉬운 방법 :

$('#test').css('textTransform', 'capitalize');

@Dementic이 나를 올바른 길로 인도 한 것에 대해 공로를 인정해야합니다. 여러분이 제안하는 것보다 훨씬 간단합니다.


32
이것은 문자열 값 자체가 아닌 문자열의 시각적 표현 만 변경합니다.
toxaq 2012

1
DB에서 가져온 변수에는이 방법을 적용 할 수 없지만 다른 instaces에서는이 방법이 매우 깔끔합니다
Armand

3
참고 : text-transform:capitalize모든 대문자에는 영향을주지 않습니다.
Bob Stein

1
단순히 표시하는 것 이외의 다른 작업에 문자열 (변수)을 사용해야한다면 어떨까요?
Fr0zenFyr

대문자로 입력을 저장하고 뷰에서만 변환합니다
Sherif Elkassaby

25

http://phpjs.org/functions/ucwords:569 에 좋은 예가 있습니다.

function ucwords (str) {
    return (str + '').replace(/^([a-z])|\s+([a-z])/g, function ($1) {
        return $1.toUpperCase();
    });
}

(간결성을 위해 소스에서 함수 설명을 생략했습니다. 자세한 내용은 링크 된 소스를 참조하십시오)

편집 :이 기능은 (질문 제목이 묻는 것처럼) 문자열의 첫 글자가 아니라 (질문이 묻는대로) 각 단어의 첫 글자를 대문자로 표시합니다.


더 이상이 작품은 "나는 예를 해요"예, 그래서 아포스트로피 후 문장는 대문자 단어는, "나는 예제 'M"가되도록 하나 개의 솔루션을 가능
lizardhr

원래 문자열에 밑줄이 있으면 작동하지 않습니다. 더 나은 성능을 위해 REGEX에 추가하십시오. TY
Ruslan Abuzant 2017 년

1
@RuslanAbuzant 그것은 다른 질문에 대답 할 것입니다. 밑줄을 단어 구분 기호 (또는 일반적인 공백)로 해석하는 것은 좋지만 OP가 요구 한 것은 아닙니다 ... 그리고 그의 사용 사례를 깨뜨릴 수도 있습니다.
조나단 Fingland

1
ucwords () 짜증. 유니 코드 (특히 키릴 자모, 그리스어 및 기타 중앙 유럽 알파벳)에서는 작동하지 않습니다. 백엔드에서 mb_convert_case ()를 더 잘 사용하십시오. 예 : mb_convert_case ($ _ POST [ 'name'], MB_CASE_TITLE, 'utf-8');
Aleksey Kuznetsov

14

순수한 자바 스크립트 솔루션을 추가하고 싶었습니다 (JQuery 없음)

function capitalize(str) {
  strVal = '';
  str = str.split(' ');
  for (var chr = 0; chr < str.length; chr++) {
    strVal += str[chr].substring(0, 1).toUpperCase() + str[chr].substring(1, str[chr].length) + ' '
  }
  return strVal
}

console.log(capitalize('hello world'));


1
고마워요, 그냥 뭔가를 고치고 싶어요. 이 c < str.length;있어야한다chr < str.length;
Leysam 로사리오

13

substring () 및 toUpperCase ()를 사용하여 첫 번째 문자를 꺼내고 대문자로 만든 다음 문자열의 첫 번째 문자를 결과로 바꿀 수 있다고 생각합니다.

myString = "cheeseburger";
firstChar = myString.substring( 0, 1 ); // == "c"
firstChar.toUpperCase();
tail = myString.substring( 1 ); // == "heeseburger"
myString = firstChar + tail; // myString == "Cheeseburger"

나는 그것이 당신에게 효과가 있다고 생각합니다. 고려해야 할 또 다른 사항은이 데이터가 표시되는 경우 CSS 속성 "text-transform : capitalize"가있는 컨테이너에 클래스를 추가 할 수 있다는 것입니다.


firstChar = firstChar.toUpperCase (); 같은 것이 있으면 안됩니다. ? Node.js에서 코드를 시도해 보았는데 그렇게하지 않으면 아무것도 변경되지 않았습니다!
Adrian Adaine 2017 년

9

이렇게하려면 사용하려는 경우 Javascript가 실제로 필요하지 않습니다.

$('#test').css('textTransform', 'capitalize');

CSS처럼 이것을하지 않는 이유

#test,h1,h2,h3 { text-transform: capitalize; }

또는 수업으로 수행하고 필요한 곳에 해당 수업을 적용하십시오.

.ucwords { text-transform: capitalize; }

4
Stackoverflow에 오신 것을 환영합니다. 귀하의 답변은 대안을 제시하고 있지만 (일부 사용 사례에서는 완벽하게 유효 할 수 있음) 실제로 질문에 대한 답변은 아닙니다. 내가 질문을 이해했듯이, 저자는 시각적 표현뿐만 아니라 실제로 Javascript 변수를 변환하기를 원했습니다.
helmbert

3
그래,하지만이 질문에 와서 다른 사람들은 나 같은 자바 스크립트 또는 CSS 답변, 괜찮 수 있습니다, 이것은 ... 정말 도움이되었다
브라이언 파월

6

들어 본 적이 substr()있습니까?

우선 :

$("#test").text($("#test").text().substr(0,1).toUpperCase()+$("#test").text().substr(1,$("#test").text().length));


[최신 정보:]

팁에 대한 @FelixKling 에게 감사드립니다 .

$("#test").text(function(i, text) {
    return text.substr(0,1).toUpperCase() + text.substr(1);
});

4
text() 번 호출하는 대신 함수를 text()다음으로 전달하십시오 .$("#test").text(function(i, text) { return text.substr(0,1).toUpperCase()+text.substr(1);});
Felix Kling

1
여기에서 오래된 군단을 파헤 치지 만, 콘텐츠가 요소에 들어가는 것으로 알려진 경우 훨씬 더 쉽게 사용할 수 있습니다.$('#test').style.textTransform='capitalize';
Rafael Herscovici

닫기, @Dementic,하지만 $('#test').css('textTransform', 'capitalize'); BTW, 이것이 최고의 답변입니다. 답변으로 제출하겠습니다.
vbullinger

@vbullinger-내가 지옥처럼 술에 취해 쓸 때 내 코드를 판단하지 마십시오 :) js가 아니라 js를 좋아합니다. 그래서 내 코드는 잘못되었지만 너무 많지는 않습니다document.getElementById('test').style.textTransform='capitalize';
Rafael Herscovici

5

@ peter-olson의 답변을 바탕으로 jQuery없이보다 객체 지향적 인 접근 방식을 취했습니다.

String.prototype.ucwords = function() {
    return this.toLowerCase().replace(/\b[a-z]/g, function(letter) {
        return letter.toUpperCase();
    });
}

alert("hello world".ucwords()); //Displays "Hello World"

예 : http://jsfiddle.net/LzaYH/1/


제 생각에는 이것이 가장 적절한 방법입니다. 나는 그것을 부를 것이다 toUpperCaseWords자바 스크립트의 라인에 유지 toUpperCase()하고toLowerCase()
AB 캐롤

4
var mystring = "hello World"
mystring = mystring.substring(0,1).toUpperCase() + 
mystring.substring(1,mystring.length)

console.log(mystring) //gives you Hello World

4

가장 간단한 방법

let str="hiren raiyani"
str.toLowerCase().replace(/(?<= )[^\s]|^./g, a => a.toUpperCase());

사용자 정의 함수 :

function capitalize(str){
 return str.toLowerCase().replace(/(?<= )[^\s]|^./g, a => a.toUpperCase());
}

출력 : Hiren Raiyani

코드를 사용자 정의 함수로 사용하거나 직접


3
var ar = 'foo bar spam egg'.split(/\W/);
for(var i=0; i<ar.length; i++) {
  ar[i] = ar[i].substr(0,1).toUpperCase() + ar[i].substr(1,ar[i].length-1) 
}
ar.join(' '); // Foo Bar Spam Egg

3

PHP의 ucwords 기능으로이 간단한 코드를 시도해 볼 수 있습니다.

function ucWords(text) {
    return text.split(' ').map((txt) => (txt.substring(0, 1).toUpperCase() + txt.substring(1, txt.length))).join(' ');
}
ucWords('hello WORLD');

대문자는 변경되지 않습니다.


3

다음과 같이 간단합니다.

string = 'test';
newString = string[0].toUpperCase() + string.slice(1);
alert(newString);

2

@Dementric의 답변을 완전히 기반으로이 솔루션은 간단한 jQuery 메서드 'ucwords'로 호출 할 준비가되었습니다 ... 여기에 기여한 모든 사람에게 감사드립니다 !!!

$.extend({
ucwords : function(str) {
    strVal = '';
    str = str.split(' ');
    for (var chr = 0; chr < str.length; chr++) {
        strVal += str[chr].substring(0, 1).toUpperCase() + str[chr].substring(1, str[chr].length) + ' '
    }
    return strVal
}

});

예 : 이것은 메소드를 사용하여 호출 할 수 있습니다.

var string = "this is a test";
string = $.ucwords(string); // Returns "This Is A Test"

2

text-transform: capitalize;이 작품에 사용할 수 있습니다 -

HTML-

<input type="text" style="text-transform: capitalize;" />

JQuery-

$(document).ready(function (){
   var asdf = "WERTY UIOP";
   $('input').val(asdf.toLowerCase());
});

이 시도

참고 : 문자열의 시각적 표현 만 변경됩니다. 이 문자열을 경고하면 항상 문자열의 원래 값이 표시됩니다.


0

첫 글자를 대문자로 바꾸기 전에 낮출 문자열입니다.

(둘 다 Jquery 구문 사용)

function CapitaliseFirstLetter(elementId) {
    var txt = $("#" + elementId).val().toLowerCase();
    $("#" + elementId).val(txt.replace(/^(.)|\s(.)/g, function($1) {
    return $1.toUpperCase(); }));
    }

또한 전체 문자열을 대문자로 표시하는 기능 :

function CapitaliseAllText(elementId) {
     var txt = $("#" + elementId).val();
     $("#" + elementId).val(txt.toUpperCase());
     }

텍스트 상자의 클릭 이벤트에 사용할 구문 :

onClick="CapitaliseFirstLetter('TextId'); return false"

0

이 코드를 사용했습니다-

function ucword(str){
    str = str.toLowerCase().replace(/(^([a-zA-Z\p{M}]))|([ -][a-zA-Z\p{M}])/g, function(replace_latter) { 
        return replace_latter.toUpperCase();
    });  //Can use also /\b[a-z]/g
    return str;  //First letter capital in each word
}

var uc = ucword("good morning. how are you?");
alert(uc);

0

HTML :

<input class="capitalize" name="Address" type="text" value="" />

jQuery를 사용한 자바 스크립트 :

$(".capitalize").bind("keyup change", function (e) {
        if ($(this).val().length == 1)
            $(this).val($(this).val().toUpperCase());
        $(this).val($(this).val().toLowerCase().replace(/\s[\p{L}a-z]/g, function (letter) {
            return letter.toUpperCase();
        }))
    });

0

JQuery없이

String.prototype.ucwords = function() {
    str = this.trim();
    return str.replace(/(^([a-zA-Z\p{M}]))|([ -][a-zA-Z\p{M}])/g, function(s){
        return s.toUpperCase();
    });
};

console.log('hello world'.ucwords()); // Display Hello World

0

 var str = "HELLO WORLD HELLO WORLD HELLO WORLD HELLO WORLD";
         str = str.replace(
                        /([A-Z])([A-Z]+)/g,
        				function (a, w1, w2) {
                            return w1 + w2.toLowerCase();
                        });
alert(str);


0

다음은 러시아 Засс-Ранцев와 같은 이중 성 및 Honoré de Balzac, d' Artagnan, Vincent van Gogh, Otto von Bismarck, Sulaymān ibn Dāwūd 등과 같은 일부 고귀한 이름을 추가로 존중하는 유니 코드 안전 ucwords () 함수입니다.

String.prototype.ucwords = function() {
  return this.toLowerCase()
    .replace(/(^|\s|\-)[^\s$]/g, function(m) {
       return m.toUpperCase();
    })
    // French, Arabic and some noble names...
    .replace(/\s(Of|De|Van|Von|Ibn|Из|Ван|Фон|Ибн)\s/g, function(m) { // Honoré de Balzac, Vincent van Gogh, Otto von Bismarck, Sulaymān ibn Dāwūd etc.
       return m.toLowerCase();
    })
    .replace(/(^|\s)(D|Д)(['’][^\s$])/g, function(m, p1, p2, p3) { // D'Artagnan or d'Artagnan / Д’Артаньян или д’Артаньян
       return p1 + (p1 === "" ? p2/*.toUpperCase()*/ : p2.toLowerCase()) + p3.toUpperCase();
    });
}

0

JS에서 첫 글자를 대문자로 만드는 가장 쉬운 방법

var string = "made in india";

string =string .toLowerCase().replace(/\b[a-z]/g, function(letter){return  letter.toUpperCase();});

alert(string );

결과 : "Made In India"

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