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

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

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


排序方案

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

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

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


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

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


5229 次点击
所在节点    问与答
34 条回复
sundev
2017-12-06 09:20:45 +08:00
怎么可能没意义,如果数据多了,不排序找起来很不方便的。
zhuzhuyule
2017-12-06 09:24:35 +08:00
那就死支持排序 +1 了?
meszyouh
2017-12-06 09:32:09 +08:00
有种变相地分类的感觉
chztv
2017-12-06 09:34:21 +08:00
排序肯定有意义,至于是按什么排,要从产品需求角度出发,比如有很多人名,也可以按姓氏笔划排序。
cctv1005s927
2017-12-06 09:34:29 +08:00
汉字排序感觉还是挺正常的需求啊,excel 不都可以做汉字排序吗?
yksoft1
2017-12-06 09:35:41 +08:00
GB2312 范围就好办,本身好像就是按最常见读音来排的。
RqPS6rhmP3Nyn3Tm
2017-12-06 09:42:37 +08:00
怎么可能没有意义,当代汉语拼音是最常用的就不说了,古人用过的有笔画数排序、部首排序、千字文排序。用了这么久的说没意义就没意义
zhuzhuyule
2017-12-06 09:49:13 +08:00
@meszyouh 什么意思?

@chztv 这个是的,人名按照笔画排序没问题。不过从日常的用词来看都是拼音首字母排序最大众了。
zhuzhuyule
2017-12-06 09:50:54 +08:00
@cctv1005s927 大软件肯定应该满足这个需求的。那就是产品中能加入中文排序就最好加入中文排序了。
miaoer1
2017-12-06 09:51:02 +08:00
粑粑让你排你就乖乖排,还叫粑粑自己按 ascii 排。找抽啊。
zhuzhuyule
2017-12-06 09:51:28 +08:00
@yksoft1 难道是 方法三? 让他自己去排就可以了?
zhuzhuyule
2017-12-06 09:52:41 +08:00
@BXIA 少量的 那也没问题,数据量大,还是拼音首字母查比较方便。
zhuzhuyule
2017-12-06 09:53:08 +08:00
@miaoer1 那就是同意 方法一了?
johnnie502
2017-12-06 10:19:09 +08:00
估计没几个人看明白楼主的所谓按汉字首字母排序的说法,我的理解是

例如:
张三 ZS
账本 ZB

按照普通的排序方法的话,是第一个汉字在码表里面的位置,拍成
张三 ZS
账本 ZB

如果按照首字母排序的话,则应该是
账本 ZB
张三 ZS

实际上这种排序意义不大,多数人还是按照第一个字的读音来定位,所以我选择 3
amaranthf
2017-12-06 10:24:04 +08:00
那个,汉字没有 ASCII 码……
geelaw
2017-12-06 10:44:55 +08:00
字典也有不同的排序啊,按照读音排序有多音字的问题,按照部首排序有多部首的问题。比较简单的是按照笔画排序。
zhuzhuyule
2017-12-06 11:04:10 +08:00
@johnnie502

那你在看看如下的汉字排序,不知道你的默认排序
ASCII
奇 22855
所 25151
期 26399
沙 27801
绮 32494
锁 38145

3,方法
['锁骨','绮绮' ,'沙滩','期望','期望','期望','期望','期望','期望','期望','期望','所以'].sort()
==》 ["所以", "期望",'期望','期望','期望','期望','期望','期望','期望', "沙滩", "绮绮", "锁骨"]
==》 ["SQ", "QW",'QW','QW','QW','QW','QW','QW','QW', "ST", "QQ", "SG"]
(当类似 "期望" 这种字符比较多的时候,你还只的后面会有 'S' 开头的 汉字吗?)

2,方法
['锁骨','绮绮' ,'沙滩','期望','期望','期望','期望','期望','期望','期望','期望','所以'].sort((a,b)=>{ return a.localeCompare(b,'zh')})
==》 ["期望",'期望','期望','期望','期望','期望','期望','期望', "绮绮", "沙滩", "所以", "锁骨"]
==》 [ "QW",'QW','QW','QW','QW','QW','QW','QW', "QQ", "ShaTan", "SuoYi", "SuoGu"]
(注意到 上面的 ["沙滩", "所以", "锁骨"] 了吧, localeCompare 如果比较拼音相同,则会检验 ASCII 码,第二个值不去作比较了)

1,方法
['锁骨','绮绮' ,'沙滩','期望','期望','期望','期望','期望','期望','期望','期望','所以'].首字母排序()
==》 ["期望",'期望','期望','期望','期望','期望','期望','期望', "绮绮", "锁骨", "沙滩", "所以"]
==》 [ "QW",'QW','QW','QW','QW','QW','QW','QW', "QQ", "SuoGu", "ShaTan", "SuoYi"]
(按照首字母排序能够更快的找到你想要的东西)

以上只是举个例子,ASCII 排序没有意义了吧.

请赐教。
zhuzhuyule
2017-12-06 11:06:34 +08:00
@amaranthf
????

@geelaw 是的,所以,拼音比较需要优化。不过绝大多数场景够用了。笔画的换,人民还要去想想这个字的实体,再去考虑他肯能的位置。
sosilver
2017-12-06 11:10:59 +08:00
联系人应用不就用这个吗
xml123
2017-12-06 11:19:55 +08:00
一般而言都是方法二吧,如果我没有理解错的话。毕竟相同汉字开头的词语放在一起更符合直觉吧,单纯的把每个字的拼音首字母取出来,实际上效果并不会好吧。

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

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

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

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

© 2021 V2EX