dnyqtxl. ytddhpq. xxn首音字母翻译一句话

之前也有弄过swift的实现所以C#上的實现只是换下语言的拷贝而已

最近由于项目里用到了拼音排序所以上网找了一些资料,下面是我的一些心得

首先,上网上搜了到了一个第三方在这里感谢一下大神作者George。

这个函数主要基于一个巨大的c语言char数组把unicode字符集中所有中文的拼音首字母都映射进去了。

之间(即从第19968开始的20902个字符是中文简体字符)我们把这些字符的拼喑首字母按照顺序都存放在一个char数组中。当我们查找一个汉字的拼音首字母时只需把这个汉字的unicode码(即char强制转换为int)减去19968,然后用这个數字作为索引去找char数组中存放的字母即可

就这样,有这个char数组为基础一切都变得非常简单

下面是我自己的工程代码

//返回list列表的数组
 
 
 
 
 
 //把所有名字放在一个未排序的数组里
 
 
 
 //获取字符串中文字的拼音首字母并与字符串共同存放
 
 
 
 
 
 
 
 
 //按照拼音首字母对这些Strings进行排序
 
 
 
 
 
 
 
 
 //返回列表的item数组
 
 
 
 
 
 
 
 
 
这樣,就已经可以返回排好序的item数组了

这个一般用在通訊里排序居多我这里就是用到了通讯里的排序,然后就来mark一下记录。

其中两个宏定义一个char数组,存放的是所有的汉字拼音首字母數组比较长,直接复制即可没必要深究。



获取拼音首字母的原理是根据编码完成的
–在unicode字符集中,汉字的编码范围为4E00 到 9FA5 之间(即从第19968開始的20902个字符是中文简体字符)
–我们把这些字符的拼音首字母按照顺序都存放在一个char数组中。当我们查找一个汉字的拼音首字母时呮需把这个汉字的unicode码(即char强制转换为int)减去19968,然后用这个数字作为索引去找char数组中存放的字母即可

我要回帖

更多关于 xenex 的文章

 

随机推荐