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

How do I make suffix function case-insensitive?

本文关键字:大小写 不区 函数 何使 后缀      更新时间:2023-09-26

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

isSuffix("Albatross", "Ross")

它返回false,但如果我尝试

isSuffix("Albatross", "ross")

它返回true。

如何使其不区分大小写?

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

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

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

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

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

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

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

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

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

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