私はフリーコードキャンプからこのコードチャレンジSpinal Tap Caseに執着しています。本質的に私は最終チェックを実行する方法を知らない。Javascriptで文字列を脊髄のケースに変換するにはどうすればよいですか?
これが最後のチェックです: spinalCase("AllThe-small Things") should return "all-the-small-things"
そして、これは私のコードです:
function spinalCase(str) {
var outputString,
newstr,
pattern1 = new RegExp(/[_\s]/, 'g'),
pattern2 = new RegExp(/(?=[A-Z])/, 'g'),
stringTest1 = pattern1.test(str),
stringTest2 = pattern2.test(str);
if(stringTest1) {
outputString = str.replace(pattern1, '-');
newstr = outputString.toLowerCase();
} else if(stringTest2) {
str.split(/(?=[A-Z])/).join(' ');
outputString = str.replace(pattern2, '-');
newstr = outputString.toLowerCase();
} else if (stringTest1 && stringTest2){
outputString = str.replace(pattern1, '-');
outputString = str.replace(pattern2, '-');
newstr = outputString.toLowerCase();
}
return newstr;
}
私は、構文の権利を取得していないが、最後のelse if
条件が最初に行くべきで実現します。
ありがとうございます!ここで
のために働きますコードをあなたの洞察力と一緒に使うことができます。非常にエレガント。私はあなたのソリューションを掘り下げなければならないでしょう。私はそれを得ると思うが。私はあなたがそのような方法を連鎖させることができるのか分からなかった。助けてくれてありがとう、ジョーダン! –
私はそれを刺すように答えを編集しましょう! – JordanHendrix
ありがとうございますが、それはうまくいきません。 最後の条件は実際には発生しますが、関数全体では答えと同じ結果が得られません。あなたの解決策が何をしているのか少し説明してください。 私のtakeは以下の通りです: 最初に 'replace 'を使って' A-Z'という大文字をチェックする最初の式と '(?!^)'と '$ 1'をチェックします。そして、私はあなたがそれらを式にするために '(...)'でラップしていると仮定します。なぜなら、インタプリタかもしれないので、そうしなければエラーを返すでしょうか? –