javascript - 不能使用 i 字母搜索带以大写 i 字母开头的单词
问题描述
我正在使用土耳其字符的搜索页面,问题是小 i 字母当用户输入 i 时,它不会带上以 İ 开头的单词(土耳其语中的大写 i),因为某些代码(toUpperCase)使它成为 I(大写英语)
我试图实现自己的大写函数而不是使用 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 (İ) 开头的单词,但不带上,或者不带上任何东西(使用我的自定义大写函数)
解决方案
要达到预期的结果,请使用 toLocaleUpperCase
请参阅此链接以获取 MDN 的更多详细信息- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toLocaleUpperCase
语法:
string.toLocaleUpperCase('TR')
推荐阅读
- excel - 返回单元格的格式化值而不是######(稳健方法)?
- c++ - 将参数传递给用户空间线程
- openmdao - 将初始猜测作为其他组件输出的函数传递给非线性求解器
- elasticsearch - 嵌套对象中日期时间范围的 Elasticsearch 查询问题
- swift - 结合 .sink 打印不打印
- python - 如何访问我的python包中静态文件的路径?
- python - 如果我有多个过滤器,如何创建一个数据框?
- java - 对 oracle json_value 函数使用内联文字而不是表达式
- python - 如何在 Django Rest Framework API 视图中隐藏密码字段的值
- python - Django 创建定期付款