我不明白为什么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之间的区别)。

您在评论中告诉:



解决方案:使用 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/

10-09 15:03