繁体   English   中英

JavaScript indexOf 忽略大小写

[英]JavaScript indexOf to ignore Case

我正在尝试查找图像的源名称中是否有noPic可以是大写或小写。

var noPic = largeSrc.indexOf("nopic");

我应该写:

var noPic = largeSrc.toLowerCase().indexOf("nopic");

但是这个解决方案不起作用......

您可以将正则表达式与不区分大小写的修饰符一起使用 - 诚然不一定像 indexOf 那样快。

var noPic = largeSrc.search(/nopic/i);

不,没有不区分大小写的方式来调用该函数。 您的第二个示例不起作用的原因可能是因为您缺少对text()函数的调用。

尝试这个:

var search = "nopic";
var noPic = largeSrc.text().toLowerCase().indexOf(search.toLowerCase());

请注意,如果搜索字符串来自用户输入,您需要转义特殊的正则表达式字符。

这是它的样子:

var search = getUserInput();

/* case-insensitive search takes around 2 times more than simple indexOf() */
var regex = RegExp(search.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'), "i");

var noPic = testString.search(regex);

查看更新的 jsperf:http: //jsperf.com/regex-vs-tolowercase-then-regex/4

脚注:从https://stackoverflow.com/a/3561711/1333402转义的正则表达式

尝试:

var lowerCaseLargeSrc = largeSrc.toLowerCase();
var noPic = lowerCaseLargeSrc.indexOf("nopic");

仅当 largeSrc 已经是字符串时,您的代码才有效。 您可能会收到一个 html 元素的输入。 因此,使用 jQuery 将任何潜在的输入元素解析为其中的文本。 例子:

var noPic = largeSrc.text().toLowerCase().indexOf("nopic");

如何使用 findIndex 代替,这样您就可以在回调中执行所有 toLowerCase() 。 对我来说效果很好:

// Not Supported in IE 6-11
const arr = ['HELLO', 'WORLD'];
const str = 'world';

const index = arr.findIndex(element => {
  return element.toLowerCase() === str.toLowerCase();
});

console.log(index); // 👉️ 1

if (index !== -1) {
  // 👉️ string is in the array
}

信用: https ://bobbyhadz.com/blog/javascript-make-array-indexof-case-insensitive

暂无
暂无

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

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