Javascript 检查字符串是否以任意多个字符结尾
如何检查字符串是否以多个字符中的任何一个结尾?当前,此代码返回false,即使字符串以问号结尾。如果字符串以句点、感叹号或问号结尾,则正常工作的代码将返回true,如果最后一个字符是其他字符,则返回false 显然,我可以独立检查这些条件,但假设我有一个很长的列表,肯定有更好的方法吗Javascript 检查字符串是否以任意多个字符结尾,javascript,Javascript,如何检查字符串是否以多个字符中的任何一个结尾?当前,此代码返回false,即使字符串以问号结尾。如果字符串以句点、感叹号或问号结尾,则正常工作的代码将返回true,如果最后一个字符是其他字符,则返回false 显然,我可以独立检查这些条件,但假设我有一个很长的列表,肯定有更好的方法吗 函数myFunction(){ var str=“你好吗?”; 变量n=str.endsWith(“.”、“!”、“?”); document.getElementById(“demo”).innerHTML=n
函数myFunction(){
var str=“你好吗?”;
变量n=str.endsWith(“.”、“!”、“?”);
document.getElementById(“demo”).innerHTML=n;
}
试试看
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);
出于某种原因,接受答案的函数给了我一些问题,所以我写了一个适合我的函数:
//check if string ends with any of array suffixes
function endsWithAny(suffixes, string) {
for (let suffix of suffixes) {
if(string.endsWith(suffix))
return true;
}
return false;
}
那么你的函数是
function myFunction() {
var str = "Hello?";
var n = endsWithAny([".", "!", "?"], str);
document.getElementById("demo").innerHTML = n;
}
您可以将
indexOf
与slice
结合使用:
函数myFunction(){
var str=“你好吗?”;
变量n='.!?'.indexOf(str.slice(-1))>=0;
document.getElementById(“demo”).innerHTML=n;
}
试试看
正则表达式不是^.*.[.!?]$
?我不熟悉正则表达式的Javascript实现,所以我可能wrong@e_i_pi:那是相等的,当然。但是,这里的一个没有锚定到字符串的开头<代码>测试将在任何地方匹配(与Python的匹配
不同,例如,如果您考虑的是那种类型的API)。使用typescript:函数endsWithAny(后缀:string[],search:string):boolean{返回后缀。some((后缀:string):boolean=>search.endsWith(后缀));}