VueJs Bootstrap Vue表上的土耳其字符搜索问题

wlzqhblo  于 2022-11-17  发布在  Vue.js
关注(0)|答案(1)|浏览(136)

我遇到了一个问题。我使用了bootstrap vue表。我有一个搜索框。我有一个yield为“伊斯坦布尔”。当我按小写的i时,它看不到它。它接受大写字母I。我尝试了toLocaleLowerCase(),但没有运行。
我在搜索框中输入“伊斯坦布尔”,但它在表格中找不到,而是在你输入“stanbul”时找到。
这是我的模板和数据集:

<template>
  <div>
    <b-table striped hover :fields="fields" :items="cities"></b-table>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        cities : [
         {key:1,city:'İstanbul'},
         {key:2,city:'İzmir'},
         {key:3,city:'Adana'},
         ],
        cityCopyArray : [
        {key:1,city:'İstanbul'},
        {key:2,city:'İzmir'},
        {key:3,city:'Adana'},
        ],
        fields:["city"]
    }
  }
</script>

这是我的投入:

<input
:placeholder="'City Name"
:id="'cityNamr'"
v-model="citySearchSearch"></input>

这是我的手表:

citySearchSearch: {
      handler(val) {
        this.cities = this.cityCopyArray.filter((city) => {
          return this.converter(city.name).includes(this.converter(val))
        })t
      },
    },

我用这个代码作为转换器:

converter(text){
      var trMap = {
        'çÇ':'c',
        'ğĞ':'g',
        'şŞ':'s',
        'üÜ':'u',
        'ıİ':'i',
        'öÖ':'o',
      };
      for(var key in trMap) {
        text = text.replace(new RegExp('['+key+']','g'), trMap[key]);
      }
      return  text.replace(/[^-a-zA-Z0-9\s]+/ig, '')
          .replace(/\s/gi, "-")
          .replace(/[-]+/gi, "-")
          .toLowerCase();
    },
insrf1ej

insrf1ej1#

您可以使用toLocaleUpperCase('tr-TR')比较土耳其字符,例如:

const firstWord = 'istanbul';
const secondWord = 'İstanbul';
// If firstWord contains secondWord, firstWordContainsSecondWord will be true otherwise false.
const firstWordContainsSecondWord = firstWord.toLocaleUpperCase('tr-TR').indexOf(secondWord.toLocaleUpperCase('tr-TR')) !== -1;

简单示例:
第一次

相关问题