すべてのアンダースコア区切り文字を削除して最初の文字を大文字に変換しようとすると次のような関数(このcodepenでも利用可能:http://codepen.io/PiotrBerebecki/pen/RRKjex) 。regex replace()メソッドを使用して区切り記号を削除し、1つのステップで最初の文字を大文字にする
目的:
は、入力文字列として'this_is_some_text'
を考えると、この関数は'ThisIsSomeText'
を返す必要があります。
ワーキングJSコードは:
function capitaliseFirst(str) {
var firstCapital = str.replace(/[a-z]+/g, x => x[0].toUpperCase() + x.slice(1));
return firstCapital.replace(/_/g, '')
}
console.log(capitaliseFirst('this_is_some_text')); // returns ThisIsSomeText
機能は、上記しかし、私は一つだけreplace()
方法が必要とされるようにリファクタリングしたいと思い、所望の目的を達成します。現時点では、私は下のコードで立ち往生しています。これがどのように完了するかも知っていますか?
動作していない(まだ)JSコード:
function capitaliseFirst2(str) {
return str.replace(/(?:_)?([a-z])/g, '$1')
}
console.log(capitaliseFirst2('some_other_text')); // should return SomeOtherText
'.reduce'は私に' .join( '') 'のようにたくさん見えること。 – melpomene
私はいくつかのスピードテストを行いました。正規表現を使って '.replace'を行ったほうが優れていましたが、それほど劇的ではありませんでした。もちろん、.reduce()の代わりに '.join( '')'を使うこともできます。 –