汉字首字母排序,这个需求无厘头吗?

2017-12-06 09:14:41 +08:00
 zhuzhuyule

如题项目中使用表格,有表格就有排序,中国人当然少不了中文了,问题来了,汉字排序的意义是什么?


排序方案

  1. 汉字拼音首字母排序 此排序需要借助字典,这样每个汉字都参与排序的顺序,能够更精准快速的让阅读者定位到位置(个人观点)。

  2. 汉字本地化排序 我这里说的是用( Javascript 中,String.localeCompare() )去做的比较排序,感觉排序出来的内容是针对拼音的排序,往往前一两个汉字就决定了排序的顺序,感觉排序不够完美。

  3. 汉字谈什么排序 是的,我和同事去讨论排序问题,他说:汉字谈什么排序,有什么意义,让他按照 ASCII 码自己排序不就完了?


额,作为一个程序猿,难道不应该站在用户到角度去考虑产品的易用性么?还是我去考虑这个排序问题确实没用?

看看大家对表格中的汉字排序有啥看法,另外有没有对首字母排序的方案有一些优秀代码的推荐。


5229 次点击
所在节点    问与答
34 条回复
NonClockworkChen
2017-12-06 11:20:59 +08:00
@sosilver 复议,电话本就是这样...
zsx
2017-12-06 11:21:32 +08:00
localCompare 可以看我这篇文章,有大坑: https://blog.zsxsoft.com/post/31
chiu
2017-12-06 12:22:38 +08:00
手机电话薄里不也排序了
just1
2017-12-06 12:27:24 +08:00
gb2312 不应该是按照新华字典顺序也就是拼音顺序排的吗?这不就是首字母吗?
KgM4gLtF0shViDH3
2017-12-06 12:36:06 +08:00
反正通讯录是肯定要排序的。
zhuzhuyule
2017-12-06 13:20:06 +08:00
@sosilver
@xml123
@zsx
@chiu
@bestkayle
我看我手机里的排序类似方法 2,但是他是全拼音排序的,第二个汉字也会排入进去的,比如,买入,卖出。
方法一:卖出,买入,锁骨,所以
方法二:买入,卖出,所以,锁骨
方法三:买入,卖出,所以,锁骨
电话本:买入,卖出,所以,锁骨


@just1 你意思直接方法 3 就可以了?
openbsd
2017-12-06 15:11:12 +08:00
数据量大重音多的话个人倾向方法一 +
首字首拼 首字二拼 .....
二字首拼 二字二拼.....
三字首拼
微软的做法(瘟 server 里中文用户名排序为例)应该还加入了声调
双人名,首字首拼 首字二拼 ....末字乱序
例如 顺序状态(三角形向上 )汪 王 吴
多音字,以该字读音(自然读音 ?)在前的为准
比如 曾 就排在 陈 前 但是在姓里貌似我认识的都念( zeng )
Showfom
2017-12-06 15:22:56 +08:00
多音字怎么办呢
houbaron
2017-12-06 17:09:09 +08:00
转成 GBK 编码似乎可以汉语拼音序
zhuzhuyule
2017-12-06 17:11:27 +08:00
@openbsd 对的,加入音调和全拼,会导致字典变大的,再加入声调,就更大了,所以个人还是觉得 多字首字母排序。
zhuzhuyule
2017-12-06 17:13:16 +08:00
@Showfom 多音字都没有很好的办法解决,只能群举了。告诉排序函数,哪些多音字需要指定翻译。
zhuzhuyule
2017-12-06 17:14:17 +08:00
@houbaron 这个场景太局限了,而且也不一定准吧。
rick09
2017-12-06 19:24:31 +08:00
拼音排序,还是直接存储全拼最好。
张三 ZS ZHANGSHAN
bmxbmx3
2021-03-07 15:29:27 +08:00
我写的中文排序库 cn_sort 应该可以帮到你,放在 pypi 了

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

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

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

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

© 2021 V2EX