2016-12-17 6 views
-1

私はFreeCodeCampフロントエンド開発証明書に取り組んでおり、基本アルゴリズムスクリプティングパートに到達しました。演習の1つは、回文をテストするコードを書くことです。私はすべてのことをよく理解していますが、すぐに自分のコードを書いていますが、アンダースコア(_)を含む文字列の正しい結果が得られない理由を理解できません。ここに私のコードは次のとおりです。JSコードが文字列からこの "_"要素をフィルタリングしないのはなぜですか?

function palindrome(str) { 
    str = str.replace(/\W/g,''); 
    if ((((str.toLowerCase()).split("")).reverse()).join("") == str.toLowerCase()){ 
     return true; 
    } 
    else { 
     return false; 
    } 
} 
palindrome("_eye"); 
+1

を? – Dekel

+0

これは(/ \ W/g、 '') 'の部分なので、私は思った。しかし、大丈夫です。私はすでに解決策を得ている。 –

答えて

1

に正規表現で\Wをyoutは正規表現を変更基本的に「ではありませんすべてのチャット[a-zA-Z0-9_]文字のいずれかを」書くための短い方法です。
ご覧のとおり、数字とアンダースコアもその一部です。

あなたが代わりに/[^a-zA-Z]/を使用することができます[a-zA-Z]ではないすべての文字削除する場合:* *アンダースコアを除外する必要があることだと思うあなたのコードの一部

function palindrome(str) { 
 
    str = str.replace(/[^a-zA-Z]/g,''); 
 
    if ((((str.toLowerCase()).split("")).reverse()).join("") == str.toLowerCase()){ 
 
     return true; 
 
    } 
 
    else { 
 
     return false; 
 
    } 
 
} 
 
console.log(palindrome("_eye"))

+0

ダウン投票者がダウン投票に関するコメントを残すかどうかは分かります。 – Dekel

0

ちょうどstr.replace(/[\W_]/g,'');

+0

これは指定された文字列のすべての文字と数字を抑制するだけです! (ほとんどの場合、どのエントリでもtrueに戻ります) – cFreed

+0

はい、エラーが発生しました。 – Tyr

+0

cFreedが正しいです。私はすでにそれを試みましたが、ほとんどの場合、「真の」結果が返されました。他のポスターのソリューションは、数値要素が除外されるのをわずかに微調整して作業しました。それでも、ありがとうございました。 –

関連する問題