通过GBK编码提取中文汉字的拼音首字母
2017-09-20 11:06
417 查看
通过GBK返回来确定中文汉字的拼音首字母
“调用方法
/** * 返回首字母 * @param strChinese 到转换的字符串 * @param bUpCase 是否返回大写 * @return */ public static String getPYIndexStr(String strChinese, boolean bUpCase){ try{ StringBuffer buffer = new StringBuffer(); byte b[] = strChinese.getBytes("GBK");//把中文转化成byte数组 for(int i = 0; i < b.length; i++){ if((b[i] & 255) > 128){ int char1 = b[i++] & 255; char1 <<= 8;//左移运算符用“<<”表示,是将运算符左边的对象,向左移动运算符右边指定的位数,并且在低位补零。其实,向左移n位,就相当于乘上2的n次方 int chart = char1 + (b[i] & 255); buffer.append(getPYIndexChar((char)chart, bUpCase)); continue; } char c = (char)b[i]; if(!Character.isJavaIdentifierPart(c))//确定指定字符是否可以是 Java 标识符中首字符以外的部分。 c = 'A'; buffer.append(c); } return buffer.toString(); }catch(Exception e){ System.out.println((new StringBuilder()).append("\u53D6\u4E2D\u6587\u62FC\u97F3\u6709\u9519").append(e.getMessage()).toString()); } return null; }
/** * 得到首字母 * @param strChinese 待转换的GBK字符 * @param bUpCase * @return */ private static char getPYIndexChar(char strChinese, boolean bUpCase){ int charGBK = strChinese; char result; if(charGBK >= 45217 && charGBK <= 45252) result = 'A'; else if(charGBK >= 45253 && charGBK <= 45760) result = 'B'; else if(charGBK >= 45761 && charGBK <= 46317) result = 'C'; else if(charGBK >= 46318 && charGBK <= 46825) result = 'D'; else if(charGBK >= 46826 && charGBK <= 47009) result = 'E'; else if(charGBK >= 47010 && charGBK <= 47296) result = 'F'; else if(charGBK >= 47297 && charGBK <= 47613) result = 'G'; else if(charGBK >= 47614 && charGBK <= 48118) result = 'H'; else if(charGBK >= 48119 && charGBK <= 49061) result = 'J'; else if(charGBK >= 49062 && charGBK <= 49323) result = 'K'; else if(charGBK >= 49324 && charGBK <= 49895) result = 'L'; else if(charGBK >= 49896 && charGBK <= 50370) result = 'M'; else if(charGBK >= 50371 && charGBK <= 50613) result = 'N'; else if(charGBK >= 50614 && charGBK <= 50621) result = 'O'; else if(charGBK >= 50622 && charGBK <= 50905) result = 'P'; else if(charGBK >= 50906 && charGBK <= 51386) result = 'Q'; else if(charGBK >= 51387 && charGBK <= 51445) result = 'R'; else if(charGBK >= 51446 && charGBK <= 52217) result = 'S'; else if(charGBK >= 52218 && charGBK <= 52697) result = 'T'; else if(charGBK >= 52698 && charGBK <= 52979) result = 'W'; else if(charGBK >= 52980 && charGBK <= 53688) result = 'X'; else if(charGBK >= 53689 && charGBK <= 54480) result = 'Y'; else if(charGBK >= 54481 && charGBK <= 55289) result = 'Z'; else result = (char)(65 + (new Random()).nextInt(25)); if(!bUpCase) result = Character.toLowerCase(result); return result; }
“调用方法
相关文章推荐
- Java中获取GBK编码汉字的拼音首字母(包括生僻字)
- [转]SQL根据GBK编码取汉字的拼音首字母的存储过程,经测试,此版有BUG!学习中......
- SQL根据GBK编码取汉字的拼音首字母的存储过程
- JS获取中文拼音首字母并通过拼音首字母快速查找页面内对应中文内容的方法【附demo源码】
- JAVA获取中文汉字的拼音首字母
- 中文乱码问题 ? 原因:JSP中默认使用iso-8859-1字符编码方式,不支持中文 ? 常见的支持中文的编码方式:gb2312(常用简体汉字)、gbk(简体和繁体汉字)、utf-8 ? 解决中文乱码
- C#汉字转拼音(npinyin)将中文转换成拼音全文或首字母
- c#将中文转换成拼音,以空格隔开,全拼,获取汉字首字母,PinyinHelper
- 不同字符集编码的英文字母和中文汉字的字节数
- MySQL中文汉字转拼音的自定义函数和使用实例(首字的首字母)
- C#汉字转拼音(npinyin)将中文转换成拼音全文或首字母
- 提取汉字拼音首字母(Java版)
- excel中提取汉字的拼音首字母
- 输入法项目->用delphi生成GBK 中文编码 表(4~5) GBK/4~5: 0xAA40~0xFEA0(部分) 扩充汉字 包括繁体 0xA840~0xA995(部分) 扩充非汉字
- 提取汉字首字母拼音
- 用delphi生成GBK 中文编码 表(4~5) GBK/4~5: 0xAA40~0xFEA0(部分) 扩充汉字 包括繁体 0xA
- sql提取汉字拼音首字母
- 输入法项目->用delphi生成GBK 中文编码 GBK 扩充汉字编码表(3) GBK/3: $8140 —$A0FE(部分)
- 汉字编码(【Unicode】 【UTF-8】 【Unicode与UTF-8之间的转换】 【汉字 Unicode 编码范围】【中文标点Unicode码】【GBK编码】【批量获取汉字UNICODE码】)
- 英文字母和中文汉字在不同字符集编码下的字节数