2017-07-13 3 views
0

文字列が複数の文字のいずれかで終了するかどうかを確認するにはどうすればよいですか?文字列が疑問符で終わるにもかかわらず、このコードは現在falseを返します。文字列がピリオド、感嘆符または疑問符で終了すると、正常に動作するコードはtrueを返し、最後の文字が他のものであればfalseを返します。文字列が複数の文字のいずれかで終わっていないか確認してください

明らかに私はこれらの条件を個別にチェックできましたが、私は非常に長いリストを持っていたと思いますが、確かに良い方法がありますか?

function myFunction() { 
 
    var str = "Hello?"; 
 
    var n = str.endsWith(".", "!", "?"); 
 
    document.getElementById("demo").innerHTML = n; 
 
}
<button onclick="myFunction()">Try it</button> 
 

 
<p id="demo"></p>

答えて

3

endsWithだけでテストするための複数の文字列を取ることはありません。あなたはそれらの配列を定義し、endsWithでそれぞれの値をチェックすることができ:

function endsWithAny(suffixes, string) { 
    return suffixes.some(function (suffix) { 
     return string.endsWith(suffix); 
    }); 
} 

function myFunction() { 
    var str = "Hello?"; 
    var n = endsWithAny([".", "!", "?"], str); 
    document.getElementById("demo").innerHTML = n; 
} 

それとも一回限りのための正規表現を使用します。

var n = /[.!?]$/.test(str); 
+0

正規表現は^ 'ではないでしょう* [。。! ?] $ '?私はJavascriptのRegExの実装に精通していないので、間違っている可能性があります。 –

+1

@e_i_pi:これは同等です。ただし、ここの文字列は文字列の先頭に固定されていません。 'test'はどこにでもマッチします(例えば、Pythonの' match'とは異なり、そのタイプのAPIがあなたの考えである場合)。 – Ryan

関連する問題