技术解析

使用 Javscript/Node 获取字符串的拼音首字母
0
2021-08-30 16:07:30
idczone

获取拼音首拼是非常常见的需求,举个例子: 微信的通讯录,手机的通讯录,各种联系人列表。

image.png

要做到这一点很容易,比如说引用一个拼音库来读出拼音的首拼。但是往往这些拼音库都是非常完整的体积非常大的库。

如果你只是想要完成以上的一个小功能。pyfl将会非常适合你。pyfl 的全称是pinyin first letters拼音全拼的意思。

pyfl是基于pinyinjs写的一个专门获取汉字首拼的库。已经经过作者的同意才开源使用的。

pyfl 的用法非常简单如下, 在支持import语法的前端项目中:

import pyfl from 'pyfl';
pyfl('喵'); // M
pyfl('好笑吗跟傻子一样整天就知道哈哈哈哈哈哈哈')); // HXMGSZYYZTJZDHHHHHHH
pyfl('罤夶繙着洗'); // TBFZX
pyfl('Pure'); // Pure
pyfl('Made by ❤'); // Made by ❤
pyfl('أشتون'); // أشتون

如果你想直接在 node 中里面使用的话:

const pyfl = require('pyfl').default;
pyfl('喵'); // M
pyfl('好笑吗跟傻子一样整天就知道哈哈哈哈哈哈哈')); // HXMGSZYYZTJZDHHHHHHH
pyfl('罤夶繙着洗'); // TBFZX
pyfl('Pure'); // Pure
pyfl('Made by ❤'); // Made by ❤
pyfl('أشتون'); // أشتون

pyfl会把支持的汉字转换成大写的拼音输出出来。如果是英文或者奇怪的文字的话会原样输出出来。

如果这个库对你有帮助的话,希望你能在 github 上给我一个 star ~


不要在 util 库里输出,该抛异常抛异常。来个 console.error,我 log 乱了怪谁去……
而且我这看着咋觉得你的 catch 没用呢,try 里的代码真的能出 exception 吗……
以及,好像不支持多音字,感觉有点太轻量了

阿.. 其实是这样的这个库是很久之前写的了,只是用 ts 重构了一下。
关于 Log 那部分移掉了, 感谢提醒,本来是自己用的一个库,没特意去做类型检查。
就随便 catch 了一下。刚才在补上类型转换,检查之类的东东。
的确不支持多音字,这个我的确没注意到,我想想办法把它加上。
刚刚测了一下,如果是多音字有些的确挺奇怪的 ..
感谢你的意见 对我帮助很大 !!

拼音首字母是不是就不应该输出非拼音字符了

遇到多音字的话会怎么处理

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服