我不明白为什么indexOf无法正常工作。
İstanbul中的字符“İ”是UTF-8字符,但是将此字符串转换为小写字母后,看起来还可以吗?
var t = "İstanbul";
var q = "ist";
filterCandidate = t.toLowerCase(); //"istanbul"
var valueToMatch = filterCandidate.trim().substring(0, q.length); //"is"
console.log("filterCandidate: " + filterCandidate);
console.log("valueToMatch: " + valueToMatch);
showElement = false;
if (q.indexOf(valueToMatch) > -1) {
showElement = true;
}
console.log("showElement: " + showElement);
最佳答案
İstanbul
的小写字母是i̇stanbul
而不是istanbul
(注意:i̇
和i
之间的区别)。
您在评论中告诉:
解决方案:使用 t.toLocaleLowerCase('tr-TR')代替 t.toLowerCase()。
"İstanbul".toLowerCase() // i̇stanbul
"İstanbul".toLocaleLowerCase('tr-TR') // istanbul
var t = "İstanbul";
var q = "ist";
filterCandidate = t.toLocaleLowerCase('tr-TR'); //"istanbul"
var valueToMatch = filterCandidate.trim().substring(0, q.length);
console.log("filterCandidate: " + filterCandidate);
console.log("valueToMatch: " + valueToMatch);
showElement = false;
if (q.indexOf(valueToMatch) > -1) {
showElement = true;
}
console.log("showElement: " + showElement);
关于javascript - string.indexOf()无法正常运行javascript,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48637873/