2017-07-13 92 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

相關問題