2016-11-18 19 views
-2

Stackで受け取った以下のコードについての説明が必要です オーバーフロー。 文字列関数を置き換える文字列を使用して

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

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

コードは、文字列は、各ドット(。)符号の後に大文字になります。誰かがが機能作品を置き換えない方法を説明することができます:

return input.toString().replace(/(^|\. *)([a-z])/g, 
function(match, separator, char) { 
    return separator + char.toUpperCase(); 
}); 

更新

置き換える機能にseparatorcharの内容は何ですか?

+3

[MDNを置き換えますか?](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace) –

+0

https://regex101.com/r/tc6ZPE/ 2 –

+0

[ask]をお読みください。重要なフレーズ:「検索と研究」と「あなたがそれを自分で解決することを妨げた困難を説明する」 –

答えて

1
input = (input === undefined || input === null) ? '' : input; 

チェック入力

return input.toString().replace(/(^|\. *)([a-z])/g, 
function(match, separator, char) { 
    return separator + char.toUpperCase(); 
}); 

空またはnullである場合、これは最も顕著

/(^|\. *)([a-z])/g 

、ドットが小文字文字が続くすべてのケースを一致させるために正規表現を使用してこれは最初に見える。その直後のa-z間の文字を探します。彼らは[a-z] [A-Z]を行っていましたが、関数は機能しませんでした。

単純なラムダは、関数の入力に対して大文字に変換します。

更新:それは正規表現関数に一致する任意の区切り文字であってもよい

セパレータは、この場合のドットであり、かつセパレータが発見された後にチャーは次の文字です。

+0

ありがとうございます。今私は少し明確です。セパレータと文字はどうですか?セパレータは?で構成されていますか? – Amran

+0

アップデート@Amranを追加しました。あなたが知りたいと思っていた答えが満足されていると感じたら、それを受け入れたものとしてマークしてください – maximdumont

関連する問題