检查字符串是否以多个字符中的任何一个结尾

新手上路,请多包涵

我如何检查字符串是否以多个字符中的任何一个结尾?目前此代码返回 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>

原文由 Taylor 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 323
2 个回答

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);

原文由 Ry- 发布,翻译遵循 CC BY-SA 3.0 许可协议

出于某种原因,接受的答案的功能给我带来了问题,所以我写了这个对我有用的功能:

 //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;
}

原文由 Russell Chisholm 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题