変数の大文字の最初の文字


88

私はウェブ上で検索しましたが、私を助けるものを見つけることができません。変数内で各単語の最初の文字を大文字にしたい。

これまで私が試した:

toUpperCase();

そして、それはすべての文字を大文字にするので、運がありませんでした。


回答:


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。これはになります。これに対する修正はありますか?
2014

2
@Dediqatedそれを指摘してくれてありがとう、編集が役立つかどうか私に知らせてください。
ピーターオルソン

よく働く!文字列の最初の文字を大文字に変換したいだけの場合、変更がどうあるべきかについてのヒントはありますか?(すべての単語の代わりに)
Andres SK

6
@andufo確かに、それは実際にははるかに簡単です。使用するだけstr[0].toUpperCase() + str.slice(1)
Peter Olson 2017年

@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);特殊文字もカバーするために使用を終了しました。
Andres SK

72

はるかに簡単な方法:

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

@Dementicに、私を正しい道に導いてくれたことを認めなければなりません。あなたたちが提案しているものよりもはるかに簡単です。


32
これは、文字列の視覚的表現のみを変更し、文字列値自体は変更しません。
toxaq 2012年

1
DBからフェッチされた変数にこれを適用することはできませんが、他のインスタンスの場合、このメソッドは非常にクリーンです
Armand

3
注:text-transform:capitalizeすべての大文字には影響しません。
ボブ・スタイン

1
文字列(変数)を表示以外の操作に使用する必要がある場合はどうなりますか?
fr0zenFyr 2017

入力を大文字で保存し、ビューでのみ変換することに注意してください
Sherif Elkassaby 2017年

25

http://phpjs.org/functions/ucwords:569に良い例があります

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

(簡潔にするためにソースからの関数コメントは省略しています。詳細については、リンクされたソースを参照してください)

編集:この関数は、文字列の最初の文字(質問のタイトルが尋ねる)だけでなく、各単語の最初の文字(質問が尋ねる)を大文字にすることに注意してください


これは、アポストロフィの後に文の単語を大文字にする、受け入れられている1つのソリューションよりもうまく機能します。たとえば、「
I'maexample

元の文字列にアンダースコアがある場合は機能しません。パフォーマンスを向上させるために、それをREGEXに追加してください。TY
Ruslan Abuzant 2017年

1
@RuslanAbuzantそれは別の質問に答えるでしょう。アンダースコアを単語の区切り文字(または一般的な空白スペース)として解釈することは問題ありませんが、OPが求めていたものではありません...そして彼のユースケースを壊す可能性さえあります。
Jonathan Fingland 2017

1
ucwords()は最悪です。Unicodeでは機能しません(特にキリル文字、ギリシャ語、その他の中央ヨーロッパのアルファベットでは機能しません)。バックエンドでmb_convert_case()を使用することをお勧めします。例:mb_convert_case($ _ POST ['name']、MB_CASE_TITLE、 'utf-8');
AlekseyKuznetsov19年

14

純粋なJavaScriptソリューション(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 Rosario 2012

13

substring()とtoUpperCase()を使用して最初の文字を引き出し、大文字にしてから、文字列の最初の文字を結果に置き換えることができると思います。

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

私はそれがあなたのために働くはずだと思います。考慮すべきもう1つの点は、このデータが表示されている場合、CSSプロパティ「text-transform:capitalize」を持つクラスをコンテナーに追加できることです。


firstChar = firstChar.toUpperCase();のようなものがあってはなりません。?Node.jsのコードを試しましたが、それを実行する必要がありましたが、何も変更されませんでした。
エイドリアンアデイン2017

9

これを行うには、使用する場合はJavascriptも必要ありません。

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

なぜCSSのようにこれをしないのですか

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

または、クラスとして実行し、そのクラスを必要な場所に適用します

.ucwords { text-transform: capitalize; }

4
Stackoverflowへようこそ。あなたの答えは代替案を提案していますが(いくつかのユースケースでは完全に有効かもしれません)、実際には質問に答えていません。質問を理解したので、著者は、視覚的な表現だけでなく、実際にJavascript変数を変換したいと考えていました。
ヘルムバート2013年

3
ええ、でもこの質問に来る他の人は私のようにjavascriptまたはcssの答えで大丈夫かもしれません、そしてこれは本当に役に立ちました...
Brian Powell

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() 4回に関数を渡すtext()$("#test").text(function(i, text) { return text.substr(0,1).toUpperCase()+text.substr(1);});
フェリックスクリング

1
それはコンテンツが要素に入っ知られていた場合は、ここに古い隊を掘る、しかし、それは使用にはるかに簡単になります:$('#test').style.textTransform='capitalize';
ラファエルHerscovici

閉じて、@ Dementic、しかしそれはそうあるべきです: $('#test').css('textTransform', 'capitalize'); ところで、これはここでの最良の答えです。回答として提出します。
vbullinger 2012年

@ vbullinger-地獄のように酔って書いたときに私のコードを判断しないでください:)そして私はjqではなくjsが大好きなので、私のコードは間違っていますが、あまり多くはありませんdocument.getElementById('test').style.textTransform='capitalize';
Rafael Herscovici 2012年

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/


私の意見では、これは本当に最も適切な方法です。私はそれを呼ぶだろうtoUpperCaseWordsjavascriptののと一直線に保つことにtoUpperCase()してtoLowerCase()
ABキャロル


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());
});

これを試して

注:これは、文字列の視覚的表現を変更するだけです。この文字列に警告すると、常に文字列の元の値が表示されます。


2

最も簡単な方法

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

出力:Hiren Raiyani

ユーザー定義関数としてコードを使用するか、直接


0

最初の文字を大文字にする前に下げる文字列。

(どちらもJquery構文を使用します)

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

さらに、WHOLE文字列を大文字にする関数:

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を使用したJavascript:

$(".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

これは、Unicodeで安全な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 );

結果: 「MadeInIndia」

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.