2017-01-31 17 views
1

文字列内のすべての単語の最初の文字を大文字にしたいと考えています。 私はこの記事Replacement Text Case Conversionを参照しています。javascriptで大文字と小文字の変換を置き換えます。

iはU $ 1 \ L $ 2 \ として置換テキストと正規表現([-ZA-Z])([-ZA-Z] (\ S)を実行してい私のエディタ(崇高なテキスト)でうまくいきます。

しかし、以下のようにreplaceメソッドを使用してjavascriptで同じことをしようとすると、構文エラーが発生して失敗します。

var regex = /([a-zA-Z])([a-zA-Z]*(\s)*)/gi; 
var rep = "\\u$1\\l$2"; // here it is giving error 
var result = input.replace(regex,rep); 

解決方法

私はこの問題がcharAt()メソッドとtoUppercase()メソッドを使って解決できることを知っています。私は置き換えて正規表現を使用してそれをやりたい:)

+0

「a」という記事は単語として扱われるべきですか?例えば「私は本を持っています」 – RomanPerekhrest

答えて

2

JS regexエンジンでは、置換パターンに大文字と小文字の演算子\uとを使用できません。 String#replace内でコールバックを使用してください:あなたは/([a-z])([a-z]*\s*)/giにあなたのパターンを減らすことができ

var input = "aZ"; 
 
var regex = /([a-zA-Z])([a-zA-Z]*(\s)*)/gi; 
 
var result = input.replace(regex, function($0,$1,$2,$3) { 
 
    return $1.toUpperCase() + $2.toLowerCase(); 
 
}); 
 
console.log(result);

注意。

関連する問題