javascript includes()不区分大小写
我有一个字符串数组,需要循环并与另一个传入的字符串进行检查javascript includes()不区分大小写,javascript,regex,Javascript,Regex,我有一个字符串数组,需要循环并与另一个传入的字符串进行检查 var filterstrings = ['firststring','secondstring','thridstring']; var passedinstring = localStorage.getItem("passedinstring"); for (i = 0; i < filterstrings.lines.length; i++) { if (passedinstring.inclu
var filterstrings = ['firststring','secondstring','thridstring'];
var passedinstring = localStorage.getItem("passedinstring");
for (i = 0; i < filterstrings.lines.length; i++) {
if (passedinstring.includes(filterstrings[i])) {
alert("string detected");
}
}
var filterstrings=['firststring','secondstring','thridstring'];
var passedinstring=localStorage.getItem(“passedinstring”);
对于(i=0;i
如果
var passedString
包含类似FirsTsTriNg
或FirsTsTriNg
的字符串,如何确保在过滤时忽略区分大小写(最好使用regex)?您只需将passedString转换为小写即可
var passedinstring = localStorage.getItem("passedinstring").toLowerCase();
var filterstrings = ['firststring','secondstring','thridstring'];
var passedinstring = localStorage.getItem("passedinstring");
// convert each string from filterstrings and passedinstring to lowercase
// to avoid case sensitive issue.
filteredStrings = filterstrings.filter((str) => str.toLowerCase().includes(passedinstring.toLowerCase())
将filterstring和PassedString转换为小写并比较
var filterstrings = ['firststring','secondstring','thridstring'];
var passedinstring =
localStorage.getItem("passedinstring").toLowerCase();
for (i = 0; i < filterstrings.lines.length; i++) {
if (passedinstring.includes(filterstrings[i].toLowerCase())) {
alert("string detected");
}
}
var filterstrings=['firststring','secondstring','thridstring'];
var passedinstring=
localStorage.getItem(“passedString”).toLowerCase();
对于(i=0;i
您可以先从过滤器字符串创建RegExp
var filterstrings = ['firststring','secondstring','thridstring'];
var regex = new RegExp( filterstrings.join( "|" ), "i");
然后测试是否存在passedString
var isAvailable = regex.test( passedinstring );
ES6数组方法可以简单地将解决方案转换为单行,使用方法确定数组条目中是否包含某个值,并结合方法将其转换为小写
var passedinstring = localStorage.getItem("passedinstring").toLowerCase();
var filterstrings = ['firststring','secondstring','thridstring'];
var passedinstring = localStorage.getItem("passedinstring");
// convert each string from filterstrings and passedinstring to lowercase
// to avoid case sensitive issue.
filteredStrings = filterstrings.filter((str) => str.toLowerCase().includes(passedinstring.toLowerCase())
我的选择是将上限与上限进行比较,或者将下限与上限进行比较,以转换两侧(我经常在SQL中这样做):
var filterstrings=['firststring','secondstring','thirDstrIng'];
var passedString='ThIrDsTrInG3';
//用于,只是为了让它更可读
for(过滤器字符串中的过滤器字符串){
if(passedString.toUpperCase().includes(filterstring.toUpperCase())){
警报(“检测到字符串”);
}
}
提示检测到字符串
使用toLowerCase()
修复了区分大小写的问题。比较时,它将所有字符串
转换为小写
var product=productList.filter((x) => x.Name.toLowerCase().includes(("Active").toLowerCase()))
我相信这会更简单、更短、更容易理解
const q = new RegExp(query, 'i');
filteredUsers = users.filter((user: User) => {
return (
user.entity.short.match(q) ||
user.firstname.match(q) ||
user.lastname.match(q)
);
});
使用一个普通的大小写或创建一个正则表达式并使用类似于的东西。一些
和它一起使用。这不应该被标记为重复。与正则表达式相比,使用includes
的优势在于它涵盖了字符串包含正则表达式特殊字符的情况。好吧,它在给定的情况下工作,但我想我们也希望它以另一种方式工作。。。(即过滤后的字符串也有大写字母)请注意,firststringtest在此也将返回true。在ES5中,filterString.map((a)=>{return a.toLowerCase()}).includes(passedString.toLowerCase())
可能是这个问题的解决方案。filterString
必须转义,否则可能会导致正则表达式损坏或出现意外行为。这比.includes()慢多少这是一个很好的答案!这是一个非常简单的单线解决方案。我在过滤器中使用filteredStrings
行,我只是检查封装过滤器语句中的长度是否>0谢谢-当人们用最新的功能回答老问题时,我总是很感激!老问题的最佳答案。恭喜。感谢您提供了简单但最好的解决方案,使用它会更安全。纯.toLowerCase()
可能会出现问题-有关详细信息,请参阅Jon Skeet在YouTube上的演示文稿。这似乎是在过滤另一组数据…并假设查询
在正则表达式中不包含任何具有特殊意义的字符。您好!抱歉,使用了我自己的代码