• 9153阅读
  • 8回复

[提问]中文字符串的排序问题 [复制链接]

上一主题 下一主题
离线woshiwo
 
只看楼主 倒序阅读 楼主  发表于: 2010-01-22
— 本帖被 XChinux 从 Qt基础编程 移动到本区(2013-04-01) —
大家有没有实现  输入几个汉字  然后按笔划多少的顺序输出
要求用QT写

我现在想不到一点算法  

谁帮忙指导一下。谢谢啦!!!
离线yangfanxing
只看该作者 1楼 发表于: 2010-01-22
你杯具了~要做这么诡异的东西。。。
1、对输入的汉字最后在 输入一串数字字符,表征各个汉字的笔画数——显然这不是你的需求;
2、添个汉字笔划对应表之类的,然后每个汉字比对去;万把个字儿吧。。。也不是很多,存储对应的笔划数;这个只最可行的了。
PHPWind好恶心。。。不想看这种界面。。。
离线woshiwo
只看该作者 2楼 发表于: 2010-01-22
我很郁闷.................................
很难很难
离线午小夜

只看该作者 3楼 发表于: 2010-01-22
引用第1楼yangfanxing于2010-01-22 14:15发表的  :
你杯具了~要做这么诡异的东西。。。
1、对输入的汉字最后在 输入一串数字字符,表征各个汉字的笔画数——显然这不是你的需求;
2、添个汉字笔划对应表之类的,然后每个汉字比对去;万把个字儿吧。。。也不是很多,存储对应的笔划数;这个只最可行的了。


好像,漢字本身就有什麽碼值。對照表以前肯定有人做過的。2010年,lz杯具了。
[操作系统版本]  Windows XP;Linux Ubuntu;Linux Fedora;
[Qt SDK版本]    4.7.0
[SDK 发布日期]  2010.05
[IDE(集成开发环境)] QtCreator
个人网页:http://hi.baidu.com/午小夜
學歷:Royal Jalidon
离线benbenmajia

只看该作者 4楼 发表于: 2010-01-22
如果把汉字变为16进制数表示呢?貌似不行,除非有个存储笔画数目的库对应查找,不然...
安然.....
离线woshiwo
只看该作者 5楼 发表于: 2010-01-22
今天上网查了  Qt中编码形式是unicode  如:

在Linux下面全面用UTF-8后就曾发现过中文排序有点不理解了,昨天才看到别人讨论,原来Unicode里面的汉字顺序居然是《康熙字典》的偏旁部首顺序。查了一下,康熙字典中的部首共有214个:

一丨丶丿乙亅二亠人儿入八冂冖冫几凵刀力勹匕匚匸十卜卩厂厶又口囗土士夂夊夕大女子宀寸小尢尸屮山巛工己巾干幺广廴廾弋弓彐彡彳心戈戶手支攴文斗斤方无日曰月木欠止歹殳毋比毛氏气水火爪父爻爿片牙牛犬玄玉瓜瓦甘生用田疋疒癶白皮皿目矛矢石示禸禾穴立竹米糸缶网羊羽老而耒耳聿肉臣自至臼舌舛舟艮色艸虍虫血行衣襾見角言谷豆豕豸貝赤走足身車辛辰辵邑酉釆里金長門阜隶隹雨靑非面革韋韭音頁風飛食首香馬骨高髟鬥鬯鬲鬼魚鳥鹵鹿麥麻黃黍黑黹黽鼎鼓鼠鼻齊齒龍龜龠

像在Google Docs里面,如果对Spreadsheet表格排序,中文就依据上面的部首顺序进行,部首在前的字就排在前面,如果部首相同,则算笔划数,笔划数相同的就不知道怎么排了。比如有这样的结果:

刘孙康张李王赵钱齊

它们的部首分别是:刀子广弓木王走金齊。

又有:刈刘则刹剂剔,文和贝同为4划,杀和齐同为6划,而点在竖前,撇在横前,按传统应该是“江山千古”(丶丨丿一乛)的顺序。另外还有“寒来暑往”(丶一丨丿乛),“天上人间”(一丨丿丶乛),札字(一丨丿丶乛)法,礼(丶一丨丿乛)字法等。

这样用Unicode的话,就是不加任何处理,排序出来的汉字也是很有道理的。但如果想排出拼音顺序就还得再想办法。

我现在想实现获取传入的中文字符串的unicode编码值, 根据unicode编码值的大小,来排序传入的中文字符串,各位大侠们....这种方法可行不?
但是在这个过程中不能在终端输出,只能在底层用unicode编码的时候实现,我刚接触Qt不久,更深层的只是还不懂
离线dbzhang800

只看该作者 6楼 发表于: 2010-01-22
1. 首先要明确需要做什么。如果你的需求和某种编码的顺序一致,那么问题很简单了。
    如果不一致,也就是你需要按照你的规则给所有汉字排个序,至于怎么排,估计只有你自己清楚了

2. Google Docs  不太可能严格按部首、拼音一类的排序。最可能的就是按照某种编码的顺序排列。

3. 这个问题和Qt关系真的不太大,不需要对Qt有多深的了解。Unicode也不会影响终端的输出(不止linux,Windows 98以后的windows内部采用的也都是unicode)
离线午小夜

只看该作者 7楼 发表于: 2010-01-22
引用第6楼dbzhang800于2010-01-22 18:08发表的  :
1. 首先要明确需要做什么。如果你的需求和某种编码的顺序一致,那么问题很简单了。
    如果不一致,也就是你需要按照你的规则给所有汉字排个序,至于怎么排,估计只有你自己清楚了
2. Google Docs  不太可能严格按部首、拼音一类的排序。最可能的就是按照某种编码的顺序排列。
.......

  
樓上是大牛。崇拜。
[操作系统版本]  Windows XP;Linux Ubuntu;Linux Fedora;
[Qt SDK版本]    4.7.0
[SDK 发布日期]  2010.05
[IDE(集成开发环境)] QtCreator
个人网页:http://hi.baidu.com/午小夜
學歷:Royal Jalidon
离线woshiwo
只看该作者 8楼 发表于: 2010-01-22
长见识了。。。可是有些听不懂

现在分配了个任务,让写一个函数,实对QStringList类型的中文按笔划进行排序的功能,通过这个函数,将传入的中文进行按笔划进行排序,函数最后也要返回 QStringList类型的中文。这就是我要实现的功能。

我看了unicode编码。不知道是不是我想的那样
“”“”“想实现获取传入的中文字符串的unicode编码值, 根据unicode编码值的大小,来排序传入的中文字符串”“”“”“”“”“”
[ 此帖被woshiwo在2010-01-22 19:33重新编辑 ]
快速回复
限100 字节
 
上一个 下一个