我正在使用带有土耳其语字符的搜索页面,问题出在小i字母上。当用户输入i时,由于某些代码(toUpperCase)使它成为我(大写的我英文)
我尝试实现自己的大写功能而不是使用toUpperCase,但没有用。
return this.options.filter(item => {
// this.search = this.search.charAt(0).toUpperCase() + name.slice(1)
return this.capitalize(item.name).indexOf(self.search.toUpperCase()) !== -1
// return item.name.toUpperCase().indexOf(this.search.toUpperCase()) !== -1 // this is the original line that works except for letter i
})
这些是我自定义的大写函数
capitalize1 (s) {
return s.charAt(0).replace('i', 'İ')
return s.charAt(0).replace('ı', 'I')
return s.charAt(0).replace('ü', 'Ü')
return s.charAt(0).replace('a', 'A')
return s.charAt(0).replace('b', 'c')
},
capitalize(search) {
if (search.substring(0,1) === 'i') {
search = search.replace('i', 'İ')
// search = this.capitalize1(self.search)
return search
} else {
var firstChar = search.charCodeAt(0);
if (firstChar >= 97 && firstChar <= 122) {
return String.fromCharCode(firstChar - 32) + word.substr(1);
}
return search;
}
}
我希望它会带来以大写字母i(İ)开头的单词,但不会带来或不会带来任何其他内容(带有我自定义的大写功能)
答案 0 :(得分:2)
要获得预期的结果,请使用toLocaleUpperCase
有关MDN- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toLocaleUpperCase
的更多详细信息,请参阅此链接
语法:
string.toLocaleUpperCase('TR')