使用 Javscript/Node 获取字符串的拼音首字母

2019-06-03 22:52:44 +08:00
 Nbsaw

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

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

如果你只是想要完成以上的一个小功能。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 ~

2936 次点击
所在节点    JavaScript
4 条回复
jiejiss
2019-06-04 08:39:14 +08:00
不要在 util 库里输出,该抛异常抛异常。来个 console.error,我 log 乱了怪谁去……
而且我这看着咋觉得你的 catch 没用呢,try 里的代码真的能出 exception 吗……
以及,好像不支持多音字,感觉有点太轻量了
Nbsaw
2019-06-04 10:57:44 +08:00
@jiejiss 阿.. 其实是这样的这个库是很久之前写的了,只是用 ts 重构了一下。
关于 Log 那部分移掉了, 感谢提醒,本来是自己用的一个库,没特意去做类型检查。
就随便 catch 了一下。刚才在补上类型转换,检查之类的东东。
的确不支持多音字,这个我的确没注意到,我想想办法把它加上。
刚刚测了一下,如果是多音字有些的确挺奇怪的 ..

感谢你的意见 对我帮助很大 !!
shawndev
2019-06-04 12:57:42 +08:00
拼音首字母是不是就不应该输出非拼音字符了
flowfire
2019-07-30 11:03:13 +08:00
遇到多音字的话会怎么处理

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/570543

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX