java汉字字符串按拼音排序
2009-11-11 09:47
686 查看
目标:实现一个汉字字符串按汉语拼音字典顺序排序。
原理:在windows环境的gbk字符集里,汉字是按汉语拼音字典顺序编码的,如“础”是B4A1,“储”是B4A2。这里有个问题就像上面的储和础这样的同音字只能遵照编码的顺序了,另外多音字也得遵照编码顺序。设计思路是先拆分汉字字符串为字符数组,获得每个汉字字符的16进制字符串表示,然后比较该字符串的字典顺序大小,排序。需要说明的是,获得汉字字符的字节数组,转换成int比较也可,实现从略。下面是实现的代码:
打印的结果为:爱安北京门天我
原理:在windows环境的gbk字符集里,汉字是按汉语拼音字典顺序编码的,如“础”是B4A1,“储”是B4A2。这里有个问题就像上面的储和础这样的同音字只能遵照编码的顺序了,另外多音字也得遵照编码顺序。设计思路是先拆分汉字字符串为字符数组,获得每个汉字字符的16进制字符串表示,然后比较该字符串的字典顺序大小,排序。需要说明的是,获得汉字字符的字节数组,转换成int比较也可,实现从略。下面是实现的代码:
import java.io.UnsupportedEncodingException; public class HanZiSort { public static void main(String[] args) throws UnsupportedEncodingException { String test = "我爱北京天安门"; System.out.println(sort(test, "gb2312")); } public static String sort(String s, String charset) { char[] c = s.toCharArray(); for (int i = 0; i < c.length - 1; i++) { for (int j = i + 1; j < c.length; j++) { if (getHexString(new String(new char[] { c[i] }), charset) .compareTo( getHexString(new String(new char[] { c[j] }), charset)) > 0) { char temp = c[i]; c[i] = c[j]; c[j] = temp; } } } return new String(c); } public static String getHexString(String s, String charset) { byte[] b = null; StringBuffer sb = new StringBuffer(); try { b = s.getBytes(charset); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } for (int i = 0; i < b.length; i++) { sb.append(Integer.toHexString(b[i] & 0xFF)); } return sb.toString(); } }
打印的结果为:爱安北京门天我
相关文章推荐
- JAVA汉字字符串按拼音排序
- Android 对汉字字符串按照拼音排序 Java
- Android 对汉字字符串按照拼音排序 Java
- JAVA汉字字符串按拼音排序
- JAVA汉字字符串按拼音排序
- Android 对汉字字符串按照拼音排序 Java
- ios 汉字字符串数组拼音排序
- Java汉字按照拼音排序
- oc 之中的 汉字字符串转化成为拼音 汉字字符串的排序
- java在汉字字符串中查找拼音和将汉字转换为拼音
- Java汉字排序(汉字转拼音用pinyin4j)
- Java比较汉字字符串排序与C++比较汉字排序
- Java汉字按照拼音排序
- java中文字符串按拼音排序 代码(转)
- [转]Java汉字按照拼音排序
- java语言将一个字符串集合按GBK编码(简体中文按拼音顺序)排序
- 汉字字符串按照拼音排序
- [转]Java汉字按照拼音排序
- 对汉字字符串按照拼音排序
- java中文字符串按拼音排序代码