React JS中如何统一阿拉伯ي与波斯ی以实现正常搜索功能?
解决波斯语与阿拉伯语字母不匹配的搜索问题
核心思路是统一文本标准:将数组中的数据和用户输入的搜索关键词,都转换为同一个字母体系(比如全部替换为波斯语标准字母),再进行匹配。
步骤1:编写标准化转换函数
创建一个函数,把文本中的阿拉伯语字母ي(以及其他可能的差异字母如ك)替换为波斯语对应的ی、ک:
const normalizePersianText = (text) => { if (!text) return ''; return text .replace(/ي/g, 'ی') // 替换阿拉伯ي为波斯ی .replace(/ك/g, 'ک'); // 替换阿拉伯ك为波斯ک(可选,根据你的数据情况添加) };
步骤2:修改搜索逻辑
在过滤数组时,同时对数组项和搜索关键词执行标准化转换,再进行匹配:
严格匹配(完全相等)
const items = ["ماشین","هواپیما","موبایل","کامپیوتر"]; const userInput = "ماشین"; // 用户输入波斯ی或阿拉伯ي都可以 const searchedItems = items.filter(item => normalizePersianText(item) === normalizePersianText(userInput) );
模糊匹配(包含关键词)
如果是模糊搜索需求,改用includes方法:
const searchedItems = items.filter(item => normalizePersianText(item).includes(normalizePersianText(userInput)) );
额外说明
- 这个方法能彻底消除两种字母的匹配障碍,用户无需区分波斯语和阿拉伯语字母的差异;
- 如果你的数据中还有其他波斯语/阿拉伯语差异字符,可以继续在
normalizePersianText函数中添加替换规则。
内容的提问来源于stack exchange,提问作者yasxcv
相关产品推荐
相关产品推荐

