2016-11-18 9 views
1

文字列の開始とドット(。)記号の後に各単語を大文字にする方法はありますか?各単語の後に大文字を使用する(。)&文字列の開始

私は以下、グーグルstackoverflowのの研究を行ったが、私は達成したが、これが唯一の文字列の開始を大文字にしますコードです。以下のような例。

var str = 'this is a text. hello world!'; 
 
str = str.replace(/^(.)/g, str[0].toUpperCase()); 
 
document.write(str);

私は、文字列がThis is a text. Hello world!.

になりたい私はtext-transform: capitalize;、CSSを使用しようとしましたが、これは活用される各単語になります。

+0

[JavaScriptでケースを宣告した文字列を変換]の可能複製(http://stackoverflow.com/questions/19089442/convert-string-to-sentence-case-in-javascript) – Fiddles

+0

は、HTTPを参照してください。 //stackoverflow.com/q/37457557/405180 – Fiddles

答えて

2

私はこのような関数を使用します。これは、文字列全体を最初に小文字に変換するオプションの2番目のパラメータをとります。その理由は、一連のTitle Case Items. That You Wishがあり、一連の文になる場合はTitle case items. That you wishになることがあるためです。

function sentenceCase(input, lowercaseBefore) { 
    input = (input === undefined || input === null) ? '' : input; 
    if (lowercaseBefore) { input = input.toLowerCase(); } 
    return input.toString().replace(/(^|\. *)([a-z])/g, function(match, separator, char) { 
     return separator + char.toUpperCase(); 
    }); 
} 

1st Capturing Group (^|\. *) 
    1st Alternative^
     ^asserts position at start of the string 
    2nd Alternative \. * 
     \. matches the character `.` literally (case sensitive) 
     * matches the character ` ` literally (case sensitive) 
     * Quantifier — Matches between zero and unlimited times, as many times as possible, giving back as needed (greedy) 
2nd Capturing Group ([a-z]) 
    Match a single character present in the list below [a-z] 
    a-z a single character in the range between a (ASCII 97) and z (ASCII 122) (case sensitive) 

を次のように正規表現が働くあなたはそうのようなあなたの例ではそれを実装します:

var str = 'this is a text. hello world!'; 
str = sentenceCase(str); 
document.write(str); // This is a text. Hello world! 

jsfiddle

PS。将来的には、私はregex101を理解し、正規表現の

+0

@haxxxtonに感謝します。素晴らしいです! – Amran

+0

@Amran、あなたは大歓迎です。他の人がこの解決策を見つけることができるように、この回答を正しいとマークすることを検討してください。 – haxxxton

+0

置換機能はどのように機能しますか?申し訳ありませんが、私はそれを混同しています – Amran

1

あなたはjqueryのを使用している場合は、このコード

function capitalize(str) { 
    return str.charAt(0).toUpperCase() + str.slice(1); 
} 
var str = "my name is Jhon. are you good. is it"; 
var str1 = str.split('.'); 
var str2 = ""; 
$.each(str1,function(i){ 
    str2 += capitalize($.trim(str1[i]))+'. '; 
}); 
console.log(str2); 

キャッチstr2に入れては使わテストするための非常便利なツールを見つけます。私の場合、 は以下のようになります。

My name is Jhon. Are you good. Is it. 
+0

関数内のiが何であるか分かりますか? – Amran

+0

iはループのインデックスです。配列 –

+0

Icの0から長さで始まります。例では、インデックス1で停止します。正しいですか? – Amran

関連する問題