首页 > 解决方案 > 不能使用 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 (İ) 开头的单词,但不带上,或者不带上任何东西(使用我的自定义大写函数)

标签: javascriptuppercase

解决方案


要达到预期的结果,请使用 toLocaleUpperCase

请参阅此链接以获取 MDN 的更多详细信息- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toLocaleUpperCase
语法:

string.toLocaleUpperCase('TR')

推荐阅读