Nat*_*Pet 386 javascript string case-sensitive case-insensitive
我有以下内容:
if (referrer.indexOf("Ral") == -1) { ... }
Run Code Online (Sandbox Code Playgroud)
我喜欢做的事情就是让Ral不区分大小写,因此,它可以是RAl,rAl等,仍然匹配.
有没有办法说Ral必须不区分大小写?
Rob*_*b W 574
.toLowerCase()之后添加referrer.此方法将字符串转换为小写字符串.然后,使用.indexOf()使用ral代替Ral.
if (referrer.toLowerCase().indexOf("ral") === -1) {
Run Code Online (Sandbox Code Playgroud)
使用正则表达式也可以实现相同的功能(当您想要针对动态模式进行测试时尤其有用):
if (!/Ral/i.test(referrer)) {
// ^i = Ignore case flag for RegExp
Run Code Online (Sandbox Code Playgroud)
Kfi*_*rez 88
另一种选择是使用搜索方法如下:
if (referrer.search(new RegExp("Ral", "i")) == -1) { ...
Run Code Online (Sandbox Code Playgroud)
它看起来更优雅然后将整个字符串转换为小写,它可能更有效.
由于toLowerCase()代码有两个遍历字符串,一个遍在整个字符串上以将其转换为小写,另一个是寻找所需的索引.
与RegExp该代码具有一个通过其它看起来以匹配所需索引的字符串.
因此,在长字符串上我建议使用该RegExp版本(我想在短字符串上,这个效率来自于创建RegExp对象的帐户)
gil*_*ly3 19
使用RegExp:
if (!/ral/i.test(referrer)) {
...
}
Run Code Online (Sandbox Code Playgroud)
或者,使用.toLowerCase():
if (referrer.toLowerCase().indexOf("ral") == -1)
Run Code Online (Sandbox Code Playgroud)
che*_*ken 10
这里有几种方法.
如果要对此实例执行不区分大小写的检查,请执行以下操作.
if (referrer.toLowerCase().indexOf("Ral".toLowerCase()) == -1) {
...
Run Code Online (Sandbox Code Playgroud)
或者,如果您定期执行此检查,则可以添加一个indexOf()类似于new 的方法String,但要使其不区分大小写.
String.prototype.indexOfInsensitive = function (s, b) {
return this.toLowerCase().indexOf(s.toLowerCase(), b);
}
// Then invoke it
if (referrer.indexOfInsensitive("Ral") == -1) { ...
Run Code Online (Sandbox Code Playgroud)
小智 10
从ES2016开始,您还可以使用更好/更简单/更优雅的方法:
if (referrer.includes("Ral")) { ... }
Run Code Online (Sandbox Code Playgroud)
要么
if (referrer.toLowerCase().includes(someString.toLowerCase())) { ... }
Run Code Online (Sandbox Code Playgroud)
以下是.indexOf()和的比较.includes():https:
//dev.to/adroitcoder/includes-vs-indexof-in-javascript
你可以试试这个
str = "Wow its so COOL"
searchStr = "CoOl"
console.log(str.toLowerCase().includes(searchStr.toLowerCase()))Run Code Online (Sandbox Code Playgroud)
以下是 ES6 中的选项,按性能降序排列
包括
if (referrer.toLowerCase().includes("Ral".toLowerCase())) { ... }
Run Code Online (Sandbox Code Playgroud)
IndexOf(有时会给出与 Includes 相似或更好的结果)
if (referrer.toLowerCase().indexOf("Ral".toLowerCase()) !== -1) { ... }
Run Code Online (Sandbox Code Playgroud)
匹配
if (referrer.match(new RegExp("Ral", 'i'))) { ... }
Run Code Online (Sandbox Code Playgroud)
基准测试结果: https: //jsben.ch/IBbnl
任何语言的示例:
\n\n'My name is \xd0\xa5\xd0\xb2\xd0\xb5\xd0\xb4\xd0\xbe\xd1\x80'.toLocaleLowerCase().includes('\xd0\xa5\xd0\xb2\xd0\x95\xd0\xb4\xd0\x9e\xd1\x80'.toLocaleLowerCase())\nRun Code Online (Sandbox Code Playgroud)\n