作为中国人,汉语拼音是我们的重要工具,在业务实现的时候,加入通用的汉语拼音首字母检索功能非常重要,目前好多人通过外部的DLLg来实现,有的人也用七八千记录的汉字对照表来解决。
有些Dll作的太粗造,有的呢。在unicode下失效,,库表的方法很苯,运行效率太差,这些都不是长远之计。
其实汉字编码并是特别复杂。用区位计算加对照表的方法基本完全可以解决,再加上附助的自定义对照表,可以说完全可以作无差错的功能函数。
提取办法!
其实,共有七千多个汉字,
1.采用区位计算,可以解决三四千个,
2.采用区位顺序对比(需作一个长串对比表),可以解决所有有规律的,
3.采用临时对比可以解决剩下的,特别字符。
所以,不用dll.(受制于人),不用采用库表检索的方法(效率低),写一百来行代码就可以解决!
1.采用区位计算,可以解决三四千个,
2.采用区位顺序对比(需作一个长串对比表),可以解决所有有规律的,
3.采用临时对比可以解决剩下的,特别字符。
所以,不用dll.(受制于人),不用采用库表检索的方法(效率低),写一百来行代码就可以解决!
首先,取ASC,区位前128个,直接取,那时asc基本码,
其次,对于ASC高低位计算而来的前1600 到5590的,是严格规律汉字,通过定位的方法,直接 取到
再次,对于大于5590的,在拼音首字对应不好,有些乱,但是,这些字是放在一个块中的,也就是说是连续的汉字块,可以作一个同等长度的对照表,直接取位置,得到首字母。
有些长用的,如全角的一些东东,位置也没有规律,但数量不多,可以采用附加对照表的方法,取出。
所谓对照表,只是一个字符串,不是什么复杂的关系表。
总结起来。就是:区位定位(区位整块汉字同一声母)+ 连续定位(连续的汉字块,但说不定是那个声母) + 自定义定位 (不连续也没有规律)
使用办法!