gpt4 book ai didi

javascript - 如何通过匹配具有相似字符的两个值来返回字符串?

转载 作者:行者123 更新时间:2023-12-03 00:41:46 25 4
gpt4 key购买 nike

问题标题没有多大帮助。让我解释一下:对于搜索功能,我使用下面的代码返回与搜索查询匹配的项目:

filter(value: string, query: string): boolean {
return value.toLowerCase().indexOf(query.toLowerCase()) > -1;
}

filteredItems() {
return this.items.filter(i => this.filter(i.value, this.queryString));
}

在这种情况下,如果包含土耳其字符的查询字符串的值是 DıĞER,则我需要返回值为 DIGER 的项目,反之亦然。

我试过了

if(query.includes('ğ') || query.includes('ş') || query.includes('ö') || query.includes('ü') || query.includes('ı') || query.includes('ç')) {
return value.toLowerCase().indexOf(query.replace('ğ', 'g').replace('ş', 's').replace('ö', 'o').replace('ü', 'u').replace('ı', 'i').replace('ç', 'c').toLowerCase()) > -1;
}

没有按照我的要求工作,它只转换土耳其字符,但我找不到任何解决方案。我该如何完成这样的任务?

最佳答案

问题似乎是 value.toLowerCase() 可能仍包含土耳其语,因此如果新的查询仅搜索英文字符,则可能找不到在新的内。

一种选择是使用查询到英文字符的无条件转换,之后您可以使用includes 检查新的(干草堆).includes 是否为查询(针):

const chars = {
ğ: 'g',
ş: 's',
ö: 'o',
ü: 'u',
ı: 'i',
ç: 'c',
};
const convert = str => str
.replace(/[ğşöüıç]/g, char => chars[char])
.toLowerCase();


filter(value: string, query: string): boolean {
const [replacedValue, replacedQuery] = [value, query].map(convert);
return replacedValue.includes(replacedQuery);
}

关于javascript - 如何通过匹配具有相似字符的两个值来返回字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53425456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com