JavaScript 如何实现在搜索中忽略变音符号
发布于 2024-01-25
1123
版权声明
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
鲁飞
扫码关注公众号
扫码阅读
手机扫码阅读
变音符号是加在字母上的符号,用来改变字母的发音或区分拼写相似的词语,比如汉语拼音中的ü或带调符的á、à。
以JavaScript为例,变音符号可以造成字符比较和长度判断的差异。尽管name1和name2变量看起来都是"Amélie",它们全等比较和长度比较的结果都是false,因为它们在底层的编码上有差异。
在docsify中,存在一个需求是在搜索时忽略变音符号,使得搜索"Amelie"可以找到"Amélie"。然而,docsify默认并不支持这一功能,需要通过剔除字符串中的变音标记后再进行搜索匹配。
为了实现这一功能,我们可以使用JavaScript的normalize方法,并传入NFD参数来分解字符串。由于带变音符号的字符在UTF-8中用两个字节表示,通过normalize方法可以将字符和变音标记分成独立的字节。
分解后,可以利用replace方法配合正则表达式删除变音标记,从而实现变音符号的忽略。示例如下:
"Amélie".normalize('NFD').replace(/[\u0300-\u036f]/g, '') > "Amelie"
这样,我们就可以在不考虑变音符号的情况下完成搜索匹配。
参考资料:
鲁飞
鲁飞
扫码关注公众号
还在用多套工具管项目?
一个平台搞定产品、项目、质量与效能,告别整合之苦,实现全流程闭环。
查看方案
鲁飞的其他文章
GitHub Actions 真香系列之文档自动简繁体转换
GitHub Actions 是 GitHub 推出的 CI\x5cCD 服务,正式版推出后也没有尝试过,最近体验了一下。
Swoole v4.6 版本新特性之 SNI 支持
Swoole 在 v4.6.0 版本中对 SNI 进行了支持,这篇文章就对这个新特性进行一些演示和说明。
GitHub Actions 真香系列之自动同步镜像仓库
GitHub虽然在国内访问慢,但是依旧不能阻挠国内开发者的使用,我们一般也会在Gitee或者其他托管平台创建一个镜像,用来方便不能正常访问GitHub的开发者。
编译安装PHP8和Swoole4
PHP8 在 6 月 25 号发布了 alpha1 版本,JIT 是大家最为关心的一个功能
GitHub Actions 真香系列之scp和ssh
虽然现在有 k8s 作为部署服务,但也有一部分的业务还是使用传统的方式,在服务器上使用 LNMP 进行部署 Web 站点。
加入社区微信群
与行业大咖零距离交流学习
PMO实践白皮书
白皮书上线
白皮书上线