繁体   English   中英

如何使后缀函数不区分大小写?

[英]How do I make suffix function case-insensitive?

我想让以下代码不区分大小写。 如果我测试它

isSuffix("Albatross", "Ross")

它返回false,但如果我尝试

isSuffix("Albatross", "ross")

它返回真。

我如何使它不区分大小写?

function isSuffix(str, suffix) {
  if (str.substring(str.length - suffix.length) == suffix) {
    return true;

  return false;
}

您可以使用正则表达式执行此操作:

function isSuffix(str, suffix) {
    var regSuffix = new RegExp(suffix + '$', 'i');
    if ( regSuffix.test(str) ) {
        return true;
    }
    return false;
}

只需使用toLowerCase函数。

function isSuffix(str, suffix) {
    str = str.toLowerCase();
    if (str.substring(str.length - suffix.length) == suffix.toLowerCase()) {
        return true;
    }
    return false;
}

您可以使用String.toLowerCase()

function isSuffix(str, suffix) {
if (str.substring(str.length - suffix.length).toLowerCase() == suffix.toLowerCase())
    return true;
return false;
}

alert(isSuffix("Albatross", "Ross"))

您也可以使用正则表达式,但这更接近您的原始代码。

将您的代码更改为此(使用.toLowerCase()

function isSuffix(str, suffix) {
    return (str.substring(str.length - suffix.length).toLowerCase() == suffix.toLowerCase());
}

除非您可以使用与“i”匹配的不区分大小写的正则表达式(当后缀只是文本或转义成本时),您必须在搜索之前先将字符串转换为小写。 如果您需要执行大量搜索,根据您的操作,将一个或两个都转换为小写可能会提供更好的性能。

创建新字符串来简单地检查后缀是否匹配也可能是浪费。 对于古老的浏览器,您可以在使用toLowerCase将字符串转换为小写后使用lastIndexOf

对于更现代的 JavaScript 代码(当前版本的浏览器/ NodeJS ),请使用endsWith (该链接还包括polyfill ):

function isSuffix(str, suffix) {
   return (str.toLowerCase().endsWith(suffix.toLowerCase());
}    

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM