私はウェブ上で検索しましたが、私を助けるものを見つけることができません。変数内で各単語の最初の文字を大文字にしたい。
これまで私が試した:
toUpperCase();
そして、それはすべての文字を大文字にするので、運がありませんでした。
回答:
.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 Αλφα"
Björn Lüchinger
、のような名前では機能しませんBjöRn LüChinger
。これはになります。これに対する修正はありますか?
str[0].toUpperCase() + str.slice(1)
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);
特殊文字もカバーするために使用を終了しました。
はるかに簡単な方法:
$('#test').css('textTransform', 'capitalize');
@Dementicに、私を正しい道に導いてくれたことを認めなければなりません。あなたたちが提案しているものよりもはるかに簡単です。
text-transform:capitalize
すべての大文字には影響しません。
http://phpjs.org/functions/ucwords:569に良い例があります
function ucwords (str) {
return (str + '').replace(/^([a-z])|\s+([a-z])/g, function ($1) {
return $1.toUpperCase();
});
}
(簡潔にするためにソースからの関数コメントは省略しています。詳細については、リンクされたソースを参照してください)
編集:この関数は、文字列の最初の文字(質問のタイトルが尋ねる)だけでなく、各単語の最初の文字(質問が尋ねる)を大文字にすることに注意してください
純粋な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'));
c < str.length;
は次のようになりますchr < str.length;
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」を持つクラスをコンテナーに追加できることです。
これを行うには、使用する場合はJavascriptも必要ありません。
$('#test').css('textTransform', 'capitalize');
なぜCSSのようにこれをしないのですか
#test,h1,h2,h3 { text-transform: capitalize; }
または、クラスとして実行し、そのクラスを必要な場所に適用します
.ucwords { text-transform: capitalize; }
聞いたことがあり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);
});
text()
4回に関数を渡すtext()
:$("#test").text(function(i, text) { return text.substr(0,1).toUpperCase()+text.substr(1);});
$('#test').style.textTransform='capitalize';
$('#test').css('textTransform', 'capitalize');
ところで、これはここでの最良の答えです。回答として提出します。
document.getElementById('test').style.textTransform='capitalize';
@ 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"
toUpperCaseWords
javascriptののと一直線に保つことにtoUpperCase()
してtoLowerCase()
var mystring = "hello World"
mystring = mystring.substring(0,1).toUpperCase() +
mystring.substring(1,mystring.length)
console.log(mystring) //gives you Hello World
PHPのucwordsの機能を使用して、この単純なコードを試すことができます。
function ucWords(text) {
return text.split(' ').map((txt) => (txt.substring(0, 1).toUpperCase() + txt.substring(1, txt.length))).join(' ');
}
ucWords('hello WORLD');
大文字は変更されません。
@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"
最初の文字を大文字にする前に下げる文字列。
(どちらも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"
私はこのコードを使用しました-
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);
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();
}))
});
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
これは、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();
});
}