Java获取一段中文的首字母,不依赖其他框架
来源:互联网 发布:苹果6splus数据怎么开 编辑:程序博客网 时间:2024/05/21 08:48
在JaveEE项目中,经常会遇到通过首字母查询内容的需求,如何获取中文的首字母呢?该实现方式涉及到汉字编码方面的知识。以下代码是查看Guns框架中的实现,借鉴并收藏下。
import java.util.Random;/*** * * 得到中文首字母 * */public class PingYinUtil { public static void main(String[] args) { String str = "这是一个测试"; System.out.println("中文首字母:" + getPYIndexStr(str, true)); } /** * 返回首字母 */ 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; } /** * 得到首字母 */ 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; }}
阅读全文
0 0
- Java获取一段中文的首字母,不依赖其他框架
- JAVA获取中文汉字的拼音首字母
- JAVA获取中文名字的首字母
- JAVA获取中文名字的首字母
- JAVA获取中文名字的首字母
- Java获取中文拼音、中文首字母缩写和中文首字母
- JAVA获取中文名字的首字母,如:"阿鲁卓玛",获取的首字母是"alzm"
- JAVA获取中文名字的首字母,如:"阿鲁卓玛",获取的首字母是"alzm"
- 获取中文首字母的方法
- 获取中文字符串的首字母
- 获取中文汉字的首字母
- JAVA中如何获取中文汉字的首字母
- 分享一段PHP制作的中文拼音首字母工具类
- java获取中文拼音首字母工具类
- 获取中文大写首字母java实现
- java 获取中文拼音首字母(缩写)
- java获取中文拼音,java获取中文拼音首字母
- java取得中文的首字母
- Ubuntu 14.04 安装tensorflow
- Android开发中的JavaBean类
- TensorFlow saver之指定变量的存取
- docker无法正常启动
- 原型和原型链
- Java获取一段中文的首字母,不依赖其他框架
- MySQL NDB Cluster 集群简介
- Oracle12c中性能优化&功能增强新特性之全局索引DROP和TRUNCATE 分区的异步维护
- sort函数 以及 qsort函数的用法
- MapReduce工作原理
- tensorflow的输入
- 正则表达式验证IP和端口格式的正确性
- 6月30日云栖精选夜读:程序员技术与文艺的PK_来首届阿里巴巴研发效能嘉年华
- 如何进行大促备战---大促备战TODO