文字列の最初の文字を大文字にするが、他の文字の大文字と小文字を変更しないにはどうすればよいですか。
例えば:
"this is a test"
- > "This is a test"
"the Eiffel Tower"
- > "The Eiffel Tower"
"/index.html"
- > "/index.html"
function capitalizeFirstLetter(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
}
他のいくつかの回答はString.prototype
を変更します(この回答も以前はそうでした)が、保守性のため(これがprototype
に追加されている場所を見つけるのは難しい)ブラウザは、同じ名前のネイティブ関数を将来追加します。
よりオブジェクト指向のアプローチ:
String.prototype.capitalize = function() {
return this.charAt(0).toUpperCase() + this.slice(1);
}
その後:
"hello world".capitalize(); => "Hello world"
CSSでは:
p:first-letter {
text-transform:capitalize;
}
これは、文字列を配列として扱うことによって最初の文字を取得する一般的な回答の短縮版です。
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);
}
これが このjsperfテスト に基づいた最速の方法です。
ご覧のとおり、最初の2つの方法はパフォーマンスの点ではほぼ同等ですが、String.prototype
を変更するのはパフォーマンスの点でははるかに遅いです。
// 10,889,187 operations/sec
function capitalizeFirstLetter(string) {
return string[0].toUpperCase() + string.slice(1);
}
// 10,875,535 operations/sec
function capitalizeFirstLetter(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
}
// 4,632,536 operations/sec
function capitalizeFirstLetter(string) {
return string.replace(/^./, string[0].toUpperCase());
}
// 1,977,828 operations/sec
String.prototype.capitalizeFirstLetter = function() {
return this.charAt(0).toUpperCase() + this.slice(1);
}
これが最良の解決策です:
最初の解決策 CSSの場合:
p {
text-transform: capitalize;
}
第二の解決策 :
function capitalizeFirstLetter(string) {
return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();
}
あなたはそれをString.prototype
に追加することもできますので、他のメソッドとチェーンすることができます。
String.prototype.capitalizeFirstLetter = function() {
return this.charAt(0).toUpperCase() + this.slice(1).toLowerCase();
}
そしてこれを次のように使います。
'string'.capitalizeFirstLetter() // String
第3の解決策 :
function ucFirstAllWords( str )
{
var pieces = str.split(" ");
for ( var i = 0; i < pieces.length; i++ )
{
var j = pieces[i].charAt(0).toUpperCase();
pieces[i] = j + pieces[i].substr(1).toLowerCase();
}
return pieces.join(" ");
}
別のケースでは、最初の文字を大文字にし、残りを小文字にする必要があります。次のような場合にこの機能を変更しました。
//es5
function capitalize(string) {
return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();
}
capitalize("alfredo") // => "Alfredo"
capitalize("Alejandro")// => "Alejandro
capitalize("ALBERTO") // => "Alberto"
capitalize("ArMaNdO") // => "Armando"
// es6 using destructuring
const capitalize = ([first,...rest]) => first.toUpperCase() + rest.join('').toLowerCase();
var string = "hello world";
string = string.charAt(0).toUpperCase() + string.slice(1);
alert(string);
文字列内のすべての単語の最初の文字を大文字にします。
function ucFirstAllWords( str )
{
var pieces = str.split(" ");
for ( var i = 0; i < pieces.length; i++ )
{
var j = pieces[i].charAt(0).toUpperCase();
pieces[i] = j + pieces[i].substr(1);
}
return pieces.join(" ");
}
これは2018 ES6 +ソリューションです :
const str = 'the Eiffel Tower';
const newStr = `${str[0].toUpperCase()}${str.slice(1)}`;
console.log('Original String:', str); // the Eiffel Tower
console.log('New String:', newStr); // The Eiffel Tower
既にlodash
を使用している(または検討している)場合、解決策は簡単です。
_.upperFirst('fred');
// => 'Fred'
_.upperFirst('FRED');
// => 'FRED'
_.capitalize('fred') //=> 'Fred'
彼らのドキュメントを参照してください: https://lodash.com/docs#capitalize
_.camelCase('Foo Bar'); //=> 'fooBar'
https://lodash.com/docs/4.15.0#camelCase
_.lowerFirst('Fred');
// => 'fred'
_.lowerFirst('FRED');
// => 'fRED'
_.snakeCase('Foo Bar');
// => 'foo_bar'
最初の大文字はVanilla jsです。
function upperCaseFirst(str){
return str.charAt(0).toUpperCase() + str.substring(1);
}
String.prototype.capitalize = function(allWords) {
return (allWords) ? // if all words
this.split(' ').map(Word => Word.capitalize()).join(' ') : //break down phrase to words then recursive calls until capitalizing all words
this.charAt(0).toUpperCase() + this.slice(1); // if allWords is undefined , capitalize only the first Word , mean the first char of the whole string
}
その後:
"capitalize just the first Word".capitalize(); ==> "Capitalize just the first Word"
"capitalize all words".capitalize(true); ==> "Capitalize All Words"
const capitalize = (string = '') => [...string].map( //convert to array with each item is a char of string by using spread operator (...)
(char, index) => index ? char : char.toUpperCase() // index true means not equal 0 , so (!index) is the first char which is capitalized by `toUpperCase()` method
).join('') //return back to string
それからcapitalize("hello") // Hello
私たちは私のお気に入りのRegExp
のうちの1つで最初の文字を得ることができました、かわいいスマイリーのように見えます:/^./
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();
});
};
underscore.js または Lo-Dash を使用する場合、 underscore.string ライブラリは、大文字化を含む文字列拡張子を提供します。
_.capitalize(string)文字列の最初の文字を大文字に変換します。
例:
_.capitalize("foo bar") == "Foo bar"
p::first-letter {
text-transform: uppercase;
}
::first-letter
と呼ばれていますが、最初の 文字 に適用されます。つまり、文字列%a
の場合、このセレクターは%
に適用され、a
は大文字になりません。:first-letter
)のみを使用して従来の表記法でサポートされています。多数の答えがありますが、ES2015には元の問題を効率的に解決するものはないので、私は次のことを思いつきました。
const capitalizeFirstChar = str => str.charAt(0).toUpperCase() + str.substring(1);
parameters => function
は、いわゆる 矢印関数 です。capitalizeFirstChar
の代わりにcapitalizeFirstLetter
という名前を使いました。const
は私たちにcapitalizeFirstChar
を定数として宣言する能力を与えてくれます、プログラマとしてあなたは常にあなたの意図を明示的に述べるべきですから。string.charAt(0)
とstring[0]
の間に大きな違いはありませんでした。ただし、string[0]
は空の文字列の場合はundefined
になるため、string && string[0]
に書き換える必要があります。これは、他の方法と比較して冗長すぎる場合があります。string.substring(1)
はstring.slice(1)
より速いです。var capitalized = yourstring[0].toUpperCase() + yourstring.substr(1);
CSS firstを使用してこれらの種類のものを処理することは常に良いです、一般的に、CSSを使用して何かを解決できる場合は、まずそれを実行し、次にJavaScriptを試して問題を解決します。 :first-letter
CSSで適用し、text-transform:capitalize;
を適用
したがって、そのためのクラスを作成してみてください。そうすれば、グローバルに使用できます。たとえば、.first-letter-uppercase
で、CSSに以下のようなものを追加します。
.first-letter-uppercase:first-letter {
text-transform:capitalize;
}
また、代替オプションはJavaScriptであるため、次のようにするのが最適です。
function capitalizeTxt(txt) {
return txt.charAt(0).toUpperCase() + txt.slice(1); //or if you want lowercase the rest txt.slice(1).toLowerCase();
}
次のように呼び出します:
capitalizeTxt('this is a test'); // return 'This is a test'
capitalizeTxt('the Eiffel Tower'); // return 'The Eiffel Tower'
capitalizeTxt('/index.html'); // return '/index.html'
capitalizeTxt('alireza'); // return 'Alireza'
何度も何度も再利用したい場合は、javascriptのネイティブ文字列に添付する方が良いので、次のようにします。
String.prototype.capitalizeTxt = String.prototype.capitalizeTxt || function() {
return this.charAt(0).toUpperCase() + this.slice(1);
}
以下のように呼び出します:
'this is a test'.capitalizeTxt(); // return 'This is a test'
'the Eiffel Tower'.capitalizeTxt(); // return 'The Eiffel Tower'
'/index.html'.capitalizeTxt(); // return '/index.html'
'alireza'.capitalizeTxt(); // return 'Alireza'
CSSのほうが簡単なようです。
<style type="text/css">
p.capitalize {text-transform:capitalize;}
</style>
<p class="capitalize">This is some text.</p>
これはCSS text-transformプロパティ(at W3Schools )からです。
すべて大文字のテキストを再フォーマットしたい場合は、他の例を次のように変更します。
function capitalize (text) {
return text.charAt(0).toUpperCase() + text.slice(1).toLowerCase();
}
これにより、次のテキストが確実に変更されます。
TEST => Test
This Is A TeST => This is a test
function capitalize(s) {
// returns the first letter capitalized + the string from index 1 and out aka. the rest of the string
return s[0].toUpperCase() + s.substr(1);
}
// examples
capitalize('this is a test');
=> 'This is a test'
capitalize('the Eiffel Tower');
=> 'The Eiffel Tower'
capitalize('/index.html');
=> '/index.html'
これが ucfirst() という関数です(「大文字の最初の文字」の略)。
function ucfirst(str) {
var firstLetter = str.substr(0, 1);
return firstLetter.toUpperCase() + str.substr(1);
}
ucfirst( "some string") - を呼び出すことで文字列を大文字にすることができます。例えば、
ucfirst("this is a test") --> "This is a test"
弦を2つに分割することで機能します。最初の行では firstLetter を取り出し、次に2番目の行では firstLetter.toUpperCase() を呼び出すことによって firstLetter を大文字にし、それを残りの文字列と結合します。 str.substr(1) を呼び出します。
あなたはこれが空の文字列のために失敗すると思うかもしれません、そして確かにCのような言語ではあなたはこれに応える必要があるでしょう。しかしJavaScriptでは、空の文字列の部分文字列を取得すると、空の文字列が返されるだけです。
String.prototype.capitalize = function(){
return this.replace( /(^|\s)([a-z])/g , function(m,p1,p2){ return p1+p2.toUpperCase();
} );
};
使用法:
capitalizedString = someString.capitalize();
これはテキスト文字列です=>これはテキスト文字列です
var str = "test string";
str = str.substring(0,1).toUpperCase() + str.substring(1);
この解決策をチェックしてください。
var stringVal = 'master';
stringVal.replace(/^./, stringVal[0].toUpperCase()); // returns Master
replace で実装するのはとても簡単な方法です。 ES6の場合:
'foo'.replace(/^./, str => str.toUpperCase())
結果:
'Foo'
yourString.replace(/^[a-z]/, function(m){ return m.toUpperCase() });
(頻繁に使用する場合は、関数にカプセル化したり、Stringプロトタイプに追加したりすることもできます。)
このようにすればucfirst
関数は機能します。
function ucfirst(str) {
var firstLetter = str.slice(0,1);
return firstLetter.toUpperCase() + str.substring(1);
}
J-Pさん、おめでとうございます。
あなたはこのように一行でそれをすることができます
string[0].toUpperCase() + string.substring(1)
yourString.replace(/\w/, c => c.toUpperCase())
私はこの矢印機能が最も簡単だとわかりました。 置換 は、文字列の最初の文字(\w
)に一致し、それを大文字に変換します。必要なものは何もありません。
機能的アプローチ
const capitalize = ([s, ...tring]) =>
[s.toUpperCase(), ...tring]
.join('');
それなら
const titleCase = str =>
str
.split(' ')
.map(capitalize)
.join(' ')
CoffeeScript で、文字列のプロトタイプに追加します。
String::capitalize = ->
@substr(0, 1).toUpperCase() + @substr(1)
使い方は次のようになります。
"woobie".capitalize()
どの収率:
"Woobie"
// Uppercase first letter
function ucfirst(field) {
field.value = field.value.substr(0, 1).toUpperCase() + field.value.substr(1);
}
使用法:
<input type="text" onKeyup="ucfirst(this)" />
function capitalize(string) {
return string.replace(/^./, Function.call.bind("".toUpperCase));
}
var str = "Ruby Java";
alert(str.charAt(0).toUpperCase() + str.substring(1));
"Ruby Java"
が返されます
@ salimの答えを編集してロケール文字変換を含める。
var str = "test string";
str = str.substring(0,1).toLocaleUpperCase() + str.substring(1);
プロトタイプを使う
String.prototype.capitalize = function () {
return this.charAt(0) + this.slice(1).toLowerCase();
}
または関数を使う
function capitalize(str) {
return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();
}
CoffeeScript
ucfirst = (str) -> str.charAt(0).toUpperCase() + str.slice(1)
Stringプロトタイプメソッドとして:
String::capitalize = -> @charAt(0).toUpperCase() + @slice(1)
1つの可能な解決策:
function ConvertFirstCharacterToUpperCase(text) {
return text.substr(0, 1).toUpperCase() + text.substr(1);
}
これを使って:
alert(ConvertFirstCharacterToUpperCase("this is string"));
ここで働いています JS Fiddle
この解決策は新しくておそらく最も単純かもしれません。
function firstUpperCase(input)
{
return input[0].toUpperCase()+input.substr(1);
}
console.log(firstUpperCase("capitalize first letter"));
s
文字列が""
、null
およびundefined
の場合、 _最短_ 3の解決策、1および2の処理方法
s&&s[0].toUpperCase()+s.slice(1) // 32 char
s&&s.replace(/./,s[0].toUpperCase()) // 36 char - using regexp
'foo'.replace(/./,x=>x.toUpperCase()) // 31 char - direct on string, ES6
s = 'foo bar'の場合
'Foo bar'
私はに関連する問題の既存の答えには何も言及しませんでした アストラルプレーンのコードポイントまたは 国際化「大文字」は、特定のスクリプトを使用しているすべての言語で同じことを意味するわけではありません。
当初、私はアストラルプレーンのコードポイントに関連した問題についての答えを見たことがありませんでした。そこに があります それは少し埋められています(このようになると思います)
提案された関数のほとんどはこのように見えます:
function capitalizeFirstLetter(str) {
return str[0].toUpperCase() + str.slice(1);
}
ただし、いくつかの大文字小文字の区別がBMP(基本多言語平面、コードポイントU + 0からU + FFFF)の範囲外です。たとえば、次のDeseretテキストを見てください。
capitalizeFirstLetter("????????????????????????"); // "????????????????????????"
文字列の配列インデックス付きプロパティは文字またはコードポイントにアクセスしないため、ここでの最初の文字は大文字になりません。それらはUTF-16コード単位にアクセスします。これはスライス時にも当てはまります - インデックス値はコード単位を指します。
UTF-16コード単位は、U + 0からU + D7FFまで、およびU + E000からU + FFFFまでの2つの範囲のコードポイントのコードポイントに対して1:1です。大部分の大文字小文字はこれら2つの範囲に入りますが、すべてではありません。
ES2015以降、これに対処するのが少し簡単になりました。 String.prototype[@@iterator]
は、コードポイント*に対応する文字列を生成します。だから、例えば、私たちはこれを行うことができます:
function capitalizeFirstLetter([ first, ...rest ]) {
return [ first.toUpperCase(), ...rest ].join('');
}
capitalizeFirstLetter("????????????????????????") // "????????????????????????"
長い文字列の場合、これはおそらくそれほど効率的ではありません** - 残りを繰り返す必要はありません。最初の(可能な)文字を取得するためにString.prototype.codePointAt
を使用することもできますが、それでもスライスの開始位置を決定する必要があります。残りを繰り返さないようにする1つの方法は、最初のコードポイントがBMPの外側にあるかどうかをテストすることです。そうでなければ、スライスは1から始まり、そうであれば、スライスは2から始まります。
function capitalizeFirstLetter(str) {
const firstCP = str.codePointAt(0);
const index = firstCP > 0xFFFF ? 2 : 1;
return String.fromCodePoint(firstCP).toUpperCase() + str.slice(index);
}
capitalizeFirstLetter("????????????????????????") // "????????????????????????"
ES5以下でも、必要に応じてそのロジックをもう少し進めることで、この作業を行うことができます。 ES5にはコードポイントを処理するための組み込みメソッドはありません。そのため、最初のコードユニットが代理***であるかどうかを手動でテストする必要があります。
function capitalizeFirstLetter(str) {
var firstCodeUnit = str[0];
if (firstCodeUnit < '\uD800' || firstCodeUnit > '\uDFFF') {
return str[0].toUpperCase() + str.slice(1);
}
return str.slice(0, 2).toUpperCase() + str.slice(2);
}
capitalizeFirstLetter("????????????????????????") // "????????????????????????"
はじめに、国際化についても検討しました。これらの中には、 what languageが使われているだけでなく、その言語の単語についての特定の知識も必要とするため、説明が非常に難しいものがあります。たとえば、アイルランドの有向グラフ "mb"はWordの先頭では "mB"と大文字になりますが、ドイツ語のeszettは決してWordを開始しません(afaik)が、ドイツ語の "SS"から小文字にするには追加の知識が必要です。 "ss"またはWordによっては "ß"になります。
この問題の最も有名な例は、おそらく、トルコ語です。トルコ語ラテン語では、iの大文字はİ、小文字のIはıです。これらは2つの異なる文字です。幸い、これを説明する方法があります。
function capitalizeFirstLetter([ first, ...rest ], locale) {
return [ first.toLocaleUpperCase(locale), ...rest ].join('');
}
capitalizeFirstLetter("italya", "en") // "Italya"
capitalizeFirstLetter("italya", "tr") // "İtalya"
ブラウザでは、ユーザーの最も推奨される言語タグはnavigator.language
で示され、優先順のリストはnavigator.languages
にあり、指定されたDOM要素の言語はObject(element.closest('[lang]')).lang || YOUR_DEFAULT_HERE
で取得できます。
たぶん、この質問をする人々はDeseretの大文字化や国際化には関係ないでしょう。しかし、これらの問題に注意するのは良いことです。たとえそれらが現在心配していなくても、結局あなたがそれらに遭遇する可能性があるからです。それは「Edge」の場合ではなく、むしろ 定義によって Edgeの場合ではありません - とにかくほとんどの人がトルコ語を話す国があり、コード単位とコードポイントを組み合わせることはかなり一般的ですバグの原因(特に絵文字に関して)。文字列も言語もかなり複雑です。
*または孤立した場合は代理コード単位
**多分。テストしていません。大文字と小文字の区別が意味のあるボトルネックであると判断したのでなければ、おそらくそれに汗をかくことはないでしょう。
***最初のユニットは孤立したサロゲートである可能性があるので、このような関数は最初のコードユニットではなく最初のコードユニットと2番目のコードユニットの両方をテストしたいかもしれません。たとえば、入力 "\ uD800x"はXをそのまま大文字にしますが、これは予期される場合とされない場合があります。
a.slice(0,1).toUpperCase()+a.slice(1)
let a = 'hello',
fix = a.slice(0,1).toUpperCase()+a.slice(1)
console.log(fix)
これは私のバージョンです、私はそれが理解するのが簡単でエレガントでもあると思います。
var str = "foo bar baz";
//capitalize
str.split(" ").map(function(i){return i[0].toUpperCase() + i.substring(1)}).join(" ");
//return "Foo Bar Baz"
//capitalize first letter
str.charAt(0).toUpperCase() + str.slice(1)
//return "Foo bar baz"
または Sugar.jscapitalize() を使用することもできます。
例:
'hello'.capitalize() -> 'Hello'
'hello kitty'.capitalize() -> 'Hello kitty'
'hello kitty'.capitalize(true) -> 'Hello Kitty'
これを行うには、いくつかの方法があります。
var lower = 'the Eiffel Tower';
var upper = lower.charAt(0).toUpperCase() + lower.substr(1);
そして、もしあなたが正規表現に慣れているならば、あなたはこのように物事をやる:
var upper = lower.replace(/^\w/, function (chr) {
return chr.toUpperCase();
});
より現代的な構文を使用することで、さらに一歩先を行くこともできます。
const upper = lower.replace(/^\w/, c => c.toUpperCase());
また、これは!@#$%^&*()}{{[];':",.<>/?
のような特殊文字で始まる単語のような例で述べたように否定的なシナリオの世話をします。
あなたが正規表現の答えの1つと行くならば、それらがASCII文字でだけ働くであろうことを覚えていてください。あなたのすべてのUnicode文字は大文字になりません。 XRegExp ライブラリとそのUnicodeプラグインは、正規表現を使い続けたい場合にこの問題を解決します。だから、このような何かがうまくいくでしょう:
String.prototype.capitalize = function () {
return this.replace(XRegExp("^\\p{L}"), function ($0) { return $0.toUpperCase(); })
}
それでもまだすべての可能性を網羅しているわけではないことを考慮すると(組み合わせ文字、 http://www.regular-expressions.info/unicode.html を参照)、単に.charAt(0).toUpperCase( )アプローチ。
これは、ダッシュで区切られた単語(フランス語の一部の名前のように)を含む、先頭の文字、または各単語の先頭の文字のみを大文字にすることができるユニバーサル関数を作成する私の試みです。
デフォルトでは、この関数は最初の文字だけを大文字にし、残りはそのまま残します。
パラメーター :
lc : true 残りの単語を小文字にする all : true 各単語を大文字にする
if (typeof String.prototype.capitalize !== 'function') {
String.prototype.capitalize = function(lc, all) {
if (all) {
return this.split( " " ).map( function(currentValue, index, array ) {
return currentValue.capitalize( lc );
}, this).join(" ").split("-").map(function(currentValue, index, array) {
return currentValue.capitalize(false);
}, this).join("-");
}
else {
return lc ? this.charAt(0).toUpperCase() + this.slice(1 ).toLowerCase() : this.charAt(0).toUpperCase() + this.slice(1);
}
}
}
var capitalizeMe = "string not starting with capital"
Substrで大文字にする
var capitalized = capitalizeMe.substr(0, 1).toUpperCase() + capitalizeMe.substr(1);
最初の文字を大文字にし、残りの文字列を小文字にするだけの場合
function capitalize(str) {
var splittedEnter = str.split(" ");
var capitalized;
var capitalizedResult;
for (var i = 0 ; i < splittedEnter.length ; i++){
capitalized = splittedEnter[i].charAt(0).toUpperCase();
splittedEnter[i] = capitalized + splittedEnter[i].substr(1).toLowerCase();
}
return splittedEnter.join(" ");
}
capitalize("tHiS wiLL be alL CapiTaLiZED.");
結果は次のようになります。
これはすべて大文字になります。
edit:Peter Mortensenにedit :)をありがとう
いいね:
function capitalize(string,a) {
var tempstr = string.toLowerCase();
if (a == false || a == undefined)
return tempstr.replace(tempstr[0], tempstr[0].toUpperCase());
else {
return tempstr.split(" ").map(function (i) { return i[0].toUpperCase() + i.substring(1) }).join(" ");
}
}
capitalize('stack overflow yeah!',true)); //Stack Overflow Yeah!
capitalize('stack stack stack stack overflow yeah!'));//Stack overflow yeah!
ちょっとした改善 - タイトルケースのすべての単語。
String.prototype.toTitleCase = function(){
return this.replace(/\b(\w+)/g, function(m,p){ return p[0].toUpperCase() + p.substr(1).toLowerCase() });
}
var s = 'heLLo wOrLD';
console.log(s.toTitleCase()); // Hello World
ワンライナー:
'string'.replace(/(^[a-z])/,function (p) { return p.toUpperCase(); } )
さて、私はJavaScriptが初めてです。私は上のものをうまく動かすことができませんでした。それで私はそれを自分で組み立て始めました。これが私の考えです(同じ、異なる、そして実用的な構文について):
String name = request.getParameter("name");
name = name.toUpperCase().charAt(0) + name.substring(1);
out.println(name);
ここで私はフォームから変数を取得します(それは手動でも動作します):
String name = "i am a Smartypants...";
name = name.toUpperCase().charAt(0) + name.substring(1);
out.println(name);
出力: "私はSmartypantsです...";
まず、この文脈で大文字を使用することの意味を明確にしたかっただけです。 "ThisStringIsCapitalized " 信頼できるソース
これがOPが探しているものではない場合、この例からわかります。それは「文字列の最初の文字を大文字にする方法」(文字列を大文字にしない)
function ucfirst (str) {
return typeof str !="undefined" ? (str += '', str[0].toUpperCase() + str.substr(1)) : '' ;
}
説明した
typeof str !="undefined" // is str set
? // true
str += '' // turn the string variable into a string
str[0].toUpperCase() //get the first character and make it upper case
+ // add
str.substr(1) // string starting from the index 1 ( starts at 0)
: // false
''; //return empty string
これは、引数を指定しても、引数を指定しなくても機能します。
undefined === ""
"" === ""
"my string" === "My string"
null === "Null"
undefined === "";
false === "False"
0 === "0"
true === "True"
[] === ""
[true,0,"",false] === "True,0,,false"
function capitalizeEachWord(str) {
return str.replace(/\w\S*/g, function(txt) {
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
});
}
document.write(capitalizeEachWord('foo BAR God bAD'));
これは簡単です
const upper = lower.replace(/^\w/, c => c.toUpperCase());
私はjQueryを使用して同じことをしようとしています(つまり、入力されている間、文字列の最初の文字を大文字にする)私はウェブ上で答えを探しましたが、見つけることができませんでした。しかし、私はjQueryでon()
関数を使用することで回避することができました。
$("#FirstNameField").on("keydown",function(e){
var str = $("#FirstNameField").val();
if(str.substring()===str.substring(0,1)){
$("#FirstNameField").val(str.substring(0,1).toUpperCase());
}
});
データ入力者が継続的に入力している間、この関数は実際には最初の文字を大文字にします。
これも同じ動作をします。
var newStr = string.slice(0,1).toUpperCase() + string.slice(1);
この質問に対する57の異なる回答、いくつかの話題外、そしてまだそれらのどれもが多くのブラウザでアジアの文字、絵文字、そして他の高いUnicodeポイント値の文字でうまくいかないという重要な問題を提起しません。これが解決策です。
const capitalizeFirstLetter = String.fromCodePoint(65536).length === 1 ?
function(S) {
"use-strict"; // Hooray! The browser uses UTF32!
return S.charAt(0).toUpperCase() + string.slice(1);
} : function(S) {
"use-strict";
// the browser is using UCS16 to store UTF16
return (S.codePointAt(0) > 65535 ?
S.slice(0,2).toUpperCase() + string.slice(2) :
S.codePointAt(0).toUpperCase() + string.slice(1)
);
};
ただし、IEでは機能しません(ただし、Edgeでは機能します)。だから、Microsoftがまもなくwindows 7を打ち切りにしても、これはそれほど問題ではないはずです。
プロジェクトにLodash
がある場合は、upperFirst
を使用してください。
これがいいときれいなバージョンです。
var str = '';
return str.replace(new RegExp('^'+str[0]+''), str[0].toUpperCase());
結果:
これはテストです - >これはテストです
RamdaJを使用したAnotehrの方法、関数型プログラミングの方法
firstCapital(str){
const fn= p=> R.toUpper(R.head(p))+R.tail(p);
return fn(str);
}
文字列に複数の単語がある
firstCapitalAllWords(str){
const fn = p=> R.toUpper(R.head(p))+R.tail(p);
return R.map(fn,R.split(' ',str)).join(' ');
}
function cap(input) {
return input.replace(/[\.\r\n\t\:\;\?\!]\W*(\w)/g, function(match, capture) {
// for other sentences in text
return match.toUpperCase();
}).replace(/^\W*\w/, function(match, capture) {
// for first sentence in text
return match.toUpperCase();
});;
}
var a = "hi, dear user. it is a simple test. see you later!\r\nbye";
console.log(cap(a));
//output: Hi, dear user. It is a simple test. See you later!
//Bye
HTTPのようなAPIを扱うときは、私の開発環境のespでこれらの行に沿って何かを使います。
名前の最初の1文字をすべて大文字にし、その構成語の間にハイフンを追加するHTTPヘッダーがあるとします。この基本的な単純なルーチンを使用して、次のようなことを実現できます。
'access control allow Origin'
.replace(/\b\w/g, function (match) {
return match.toUpperCase();
})
.split(' ')
.join('-');
// Output: 'Access-Control-Allow-Origin'
それはおそらく最もエレガントで魅力的な関数定義ではありませんが、それは確かに仕事を成し遂げます。
これが私が宗教的に使っていることです。
function capitalizeMe(str,force){
str=force ? str.toLowerCase() : str;
return str.replace(/(\b)([a-zA-Z])/g,
function(firstLetter){
return firstLetter.toUpperCase();
});
}
var firstName = capitalizeMe($firstName.val());
メソッドは値を受け取り、それを分割して文字列の配列を取得します。
const firstLetterToUpperCase = value => {
return value.replace(
value.split("")["0"], // Split stirng and get the first letter
value
.split("")
["0"].toString()
.toUpperCase() // Split string and get the first letter to replace it with an uppercase value
);
};
私は、機能的な方法(例:マッピング配列)を指向したソリューションを使用することを好みます。
Array.from(str).map((letter, i) => i === 0 ? letter.toUpperCase() : letter ).join('');
var a = "this is a test"
console.log(a.replace(/^[a-z]/g, txt => txt.toUpperCase()));
メソッドがObject
やfunction
などの予期しないタイプのデータで渡されると、すべての答えがクラッシュします。
そのため、どのような状況でもクラッシュしないように、型を確認する必要があります。
capitalizeFirstLetter = string => {
if (typeof string == "string") {
console.log("passed");
return string.charAt(0).toUpperCase() + string.slice(1);
} else {
console.log("error");
return string;
}
};
//type function
console.log(
capitalizeFirstLetter(() => {
return true;
})
);
// error
// () => { return true; }
//type object
console.log(capitalizeFirstLetter({ x: 1 }));
// error
// Object { x: 1 }
//type boolean
console.log(capitalizeFirstLetter(true));
// error
// true
//type undefined
console.log(capitalizeFirstLetter(undefined));
// error
// undefined
//type null
console.log(capitalizeFirstLetter(null));
// error
// null
//type NaN
console.log(capitalizeFirstLetter(NaN));
// error
// NaN
//type number
console.log(capitalizeFirstLetter(2));
// error
// 2
//type any for e.g. class
class Jaydeep {}
console.log(capitalizeFirstLetter(new Jaydeep()));
// error
// Object {}
//type string
console.log(capitalizeFirstLetter("1"));
console.log(capitalizeFirstLetter("a"));
console.log(capitalizeFirstLetter("@"));
console.log(capitalizeFirstLetter(""));
// 1
// A
// @
// :empty string
このコードを試してください:
alert("hello".substr(0, 1).toUpperCase() + "hello".substr(1));
それがしているのは、こんにちはそれを大文字にし、残りを追加する際に最初の文字を取ります。
これは可能性のある先行空白を許容し、文字列の最初の文字のターゲットを見逃しません。したがって、それはスレッドで利用可能なすでに良い解決策を改善するかもしれません。
str = " the Eifel Tower";
str.replace(/\w/, str.match(/\w/)[0].toUpperCase());
>> " The Eifel Tower";
!しかし、空白文字列に対して実行すると「ソフト」エラーが発生します。
+str!=+str ? str.replace(/\w/, str.match(/\w/)[0].toUpperCase()) : str;
現在投票されている答えは正しいですが、最初の文字を大文字にする前に文字列の長さをトリムしたりチェックしたりしません。
String.prototype.ucfirst = function(notrim) {
s = notrim ? this : this.replace(/(?:(?:^|\n)\s+|\s+(?:$|\n))/g,'').replace(/\s+/g,' ');
return s.length > 0 ? s.charAt(0).toUpperCase() + s.slice(1) : s;
}
最初に文字列がトリミングされないようにnotrim引数を設定します。
'pizza'.ucfirst() => 'Pizza'
' pizza'.ucfirst() => 'Pizza'
' pizza'.ucfirst(true) => ' pizza'
完全を期すために、私が言及していない別の方法を追加します。できるからといって、そうすべきだという意味ではありません。コードは配列デストラクタを使用するのでES6が必要です。
const capitalizeFirstLetter = s => {
const type = typeof s;
if (type !== "string") {
throw new Error(`Expected string, instead received ${type}`);
}
const [firstChar, ...remainingChars] = s;
return [firstChar.toUpperCase(), ...remainingChars].join("");
};
この関数は2つの引数を取ります: start - 開始インデックス; length - Capitalizeへの部分文字列の長さ
String.prototype.subUpper = function () {
var result = this.toString();
var start = 0;
var length = 1;
if (arguments.length > 0) {
start = arguments[0];
if (start < this.length) {
if (arguments.length > 1) { length = arguments[1]; }
if (start + length > this.length) {
length = this.length - start;
}
var startRest = start + length;
var prefix = start > 0 ? this.substr(0, start) : String.empty;
var sub = this.substr(start, length);
var suffix = this.substr(startRest, this.length - startRest);
result = prefix + sub.toUpperCase() + suffix;
}
}
return result;
};
あなたの文字列を大文字にするためにNodeJS http://stringjs.com/ パッケージのこのモジュールを使ってください
var S = require('string');
S('jon').capitalize().s; //'Jon'
S('JP').capitalize().s; //'Jp'
TypeScriptの場合
capitalizeFirstLetter(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
}
最初の文字列の首都を作るには
第一の解決策
"これはテストです" - > "これはテストです"
var Word = "this is a test"
Word[0].toUpperCase();
それは=> "これはテストです"となります /
文字列の最初の単語を作るための第2の解決策
"これはテストです" - > "これはテストです"
function capitalize(str) {
const Word = [];
for(let char of str.split(' ')){
Word.Push(char[0].toUpperCase() + char.slice(1))
}
return Word.join(' ');
}
capitalize("this is a test");
それは=> "これはテストです"となります /
あなたはこのようなことをすることができます:
mode = "string";
string = mode.charAt(0).toUpperCase() + mode.substr(1,mode.length).toLowerCase();
console.log(string);
これは印刷されます
String
string = string.replace(string.charAt(0), string.charAt(0).toUpperCase());
1行のライナー( "inputStringは任意の文字列に設定できます")inputString.replace(/.{1}/ ,inputString.charAt(0).toUpperCase())
</code>
最も簡単な解決策は、
let yourSentence = 'it needs first letter upper case';
yourSentence.charAt(0).toUpperCase() + yourSentence.substr(1);
または
yourSentence.charAt(0).toUpperCase() + yourSentence.slice(1);
または
yourSentence.substr(0, 1).toUpperCase() + yourSentence.substr(1);
たとえば、hello to the world
がHello To The World
になるように、文字列内の every の最初の文字を大文字にする場合は、次のようにします(Steve Harrisonから転用)。
function capitalizeEveryFirstLetter(string) {
var splitStr = string.split(' ')
var fullStr = '';
$.each(splitStr,function(index){
var currentSplit = splitStr[index].charAt(0).toUpperCase() + splitStr[index].slice(1);
fullStr += currentSplit + " "
});
return fullStr;
}
これを使用して呼び出すことができます:
capitalizeFirstLetter("hello to the world");