我有以下几点:
if (referrer.indexOf("Ral") == -1) { ... }
我喜欢做的是使Ral不区分大小写,这样它可以是Ral, Ral等,仍然匹配。
有办法说拉尔必须不区分大小写吗?
我有以下几点:
if (referrer.indexOf("Ral") == -1) { ... }
我喜欢做的是使Ral不区分大小写,这样它可以是Ral, Ral等,仍然匹配。
有办法说拉尔必须不区分大小写吗?
当前回答
任何语言的例子:
'My name is Хведор'.toLocaleLowerCase().includes('ХвЕдОр'.toLocaleLowerCase())
其他回答
为了做一个更好的搜索使用下面的代码,
var myFav = "javascript";
var theList = "VB.NET, C#, PHP, Python, JavaScript, and Ruby";
// Check for matches with the plain vanilla indexOf() method:
alert( theList.indexOf( myFav ) );
// Now check for matches in lower-cased strings:
alert( theList.toLowerCase().indexOf( myFav.toLowerCase() ) );
在第一个alert()中,JavaScript返回"-1" -换句话说,indexOf()没有找到匹配:这只是因为"JavaScript"在第一个字符串中是小写的,在第二个字符串中是正确的大写。要使用indexOf()执行不区分大小写的搜索,可以将两个字符串都设置为大写或小写。这意味着,与第二个alert()一样,JavaScript将只检查所寻找的字符串是否出现,忽略大小写。
参考, http://freewebdesigntutorials.com/javaScriptTutorials/jsStringObject/indexOfMethod.htm
你可以试试这个
str = "哇,太酷了" searchStr = "CoOl" console.log (str.toLowerCase()其中包括(searchStr.toLowerCase ()))
另一种选择是使用如下的搜索方法:
if (referrer.search(new RegExp("Ral", "i")) == -1) { ...
它看起来比将整个字符串转换为小写更优雅,而且可能更高效。 使用toLowerCase()代码对字符串进行了两次传递,一次是对整个字符串进行传递,将其转换为小写,另一次是寻找所需的索引。 在RegExp中,代码只传递一次字符串,以便与所需的索引匹配。
因此,对于长字符串,我建议使用RegExp版本(我猜对于短字符串,这种效率来自于创建RegExp对象)
在ES2016中,你还可以使用稍微更好/更简单/更优雅的方法(区分大小写):
if (referrer.includes("Ral")) { ... }
或(不区分大小写):
if (referrer.toLowerCase().includes(someString.toLowerCase())) { ... }
下面是.indexOf()和.includes()的比较: https://dev.to/adroitcoder/includes-vs-indexof-in-javascript
在referrer后添加. touppercase()。此方法将字符串转换为大写字符串。然后,使用. indexof()使用RAL代替RAL。
if (referrer.toUpperCase().indexOf("RAL") === -1) {
使用正则表达式也可以达到同样的效果(当你想测试动态模式时特别有用):
if (!/Ral/i.test(referrer)) {
// ^i = Ignore case flag for RegExp