我有以下几点:
if (referrer.indexOf("Ral") == -1) { ... }
我喜欢做的是使Ral不区分大小写,这样它可以是Ral, Ral等,仍然匹配。
有办法说拉尔必须不区分大小写吗?
我有以下几点:
if (referrer.indexOf("Ral") == -1) { ... }
我喜欢做的是使Ral不区分大小写,这样它可以是Ral, Ral等,仍然匹配。
有办法说拉尔必须不区分大小写吗?
当前回答
if (referrer.toUpperCase().indexOf("RAL") == -1) { ...
其他回答
如果referrer是一个数组,则可以使用findIndex()
if(referrer.findIndex(item => 'ral' === item.toLowerCase()) == -1) {...}
以下是我的看法:
脚本:
var originalText = $("#textContainer").html()
$("#search").on('keyup', function () {
$("#textContainer").html(originalText)
var text = $("#textContainer").html()
var val = $("#search").val()
if(val=="") return;
var matches = text.split(val)
for(var i=0;i<matches.length-1;i++) {
var ind = matches[i].indexOf(val)
var len = val.length
matches[i] = matches[i] + "<span class='selected'>" + val + "</span>"
}
$("#textContainer").html(matches.join(""))
HTML:
<input type="text" id="search">
<div id="textContainer">
lorem ipsum is simply dummy text of the printing and typesetting industry. lorem ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of letraset sheets containing lorem ipsum passages, and more recently with desktop publishing software like Aldus pagemaker including versions of lorem ipsum.</div>
Codepen
现在都2016年了,还没有明确的方法来做到这一点吗?我还想要复印的呢。我来试试。
设计说明:我想尽量减少内存使用,从而提高速度——这样就不会复制/改变字符串。我认为V8(和其他引擎)可以优化这个功能。
//TODO: Performance testing
String.prototype.naturalIndexOf = function(needle) {
//TODO: guard conditions here
var haystack = this; //You can replace `haystack` for `this` below but I wan't to make the algorithm more readable for the answer
var needleIndex = 0;
var foundAt = 0;
for (var haystackIndex = 0; haystackIndex < haystack.length; haystackIndex++) {
var needleCode = needle.charCodeAt(needleIndex);
if (needleCode >= 65 && needleCode <= 90) needleCode += 32; //ToLower. I could have made this a function, but hopefully inline is faster and terser
var haystackCode = haystack.charCodeAt(haystackIndex);
if (haystackCode >= 65 && haystackCode <= 90) haystackCode += 32; //ToLower. I could have made this a function, but hopefully inline is faster and terser
//TODO: code to detect unicode characters and fallback to toLowerCase - when > 128?
//if (needleCode > 128 || haystackCode > 128) return haystack.toLocaleLowerCase().indexOf(needle.toLocaleLowerCase();
if (haystackCode !== needleCode)
{
foundAt = haystackIndex;
needleIndex = 0; //Start again
}
else
needleIndex++;
if (needleIndex == needle.length)
return foundAt;
}
return -1;
}
我取这个名字的原因:
应该有IndexOf的名字 不要添加后缀词—IndexOf指的是下面的参数。所以用前缀代替。 不要使用“大小写不敏感”前缀会太长 “natural”是一个很好的候选词,因为默认区分大小写的比较首先对人类来说并不自然。
为什么不…:
toLowerCase() -可能重复调用同一个字符串上的toLowerCase。 RegExp—用变量搜索很麻烦。甚至RegExp对象也不得不转义字符
使用RegExp:
if (!/ral/i.test(referrer)) {
...
}
或者,使用.toLowerCase():
if (referrer.toLowerCase().indexOf("ral") == -1)
你可以试试这个
str = "哇,太酷了" searchStr = "CoOl" console.log (str.toLowerCase()其中包括(searchStr.toLowerCase ()))