使用pinyin4j获取汉字的拼音和全角半角转换
来源:互联网 发布:java web项目 log4j 编辑:程序博客网 时间:2024/03/29 22:43
前段时间sprint分配了一项任务,查询一个bug,页面搜索汉字加上拼音的时候,无法匹配。最开始的时候以为拼音函数有问题,所以估了一下点就开始着手这件事情。
拼音工具类如下:
/** * 获取汉字串拼音首字母,英文字符不变 * @param chinese 汉字串 * @return 汉语拼音首字母 */public static String getFirstSpell(String chinese) {if(chinese == null){return "";}StringBuffer pybf = new StringBuffer();char[] arr = chinese.toCharArray();HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);for (int i = 0; i < arr.length; i++) {if (arr[i] > 128) {try {String[] temp = PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat);if (temp != null) {pybf.append(temp[0].charAt(0));}} catch (BadHanyuPinyinOutputFormatCombination e) {e.printStackTrace();}} else {pybf.append(arr[i]);}}return pybf.toString().replaceAll("\\W", "").trim();}
方法很简单,先对输入内容进行判别,如果是汉字(arr[i] > 128),那么就使用pinyin4j获取汉字的首字母,其中对于多音字的情况,我这里设置成了只取第一个,并且WITHOUT_TONE没有对几声进行辨识(相对于大多数业务都是不需要的,具体的可以查看API,如果你需要的话。);如果不是汉字的话,我就原样给它加在了返回字符串最后。然后通过repalce替换成只有字母和数字存在的字符串。
看到这里,大家或许觉得都没有问题,但是问题来了。.
输入的字符串中的字母竟然是全角的!!!!!!
我当时可是看了好久,好久,而且还无法复现问题,以为是方法出了问题。期间我对arr[i]>128进行了怀疑,然后通过正则匹配汉字(百度之),阿西吧,it doesn't work!然后我就~~~~~~被测试妹子复现了,哈哈哈哈。接着就是简单的全角转半角了啊。全角转半角的代码出处无法考核,反正是百度的。。
全角转半角代码(其中的全局变量请百度之,哈哈哈哈哈哈)
/** * 全角转半角 * * @param fullWidthStr * 字符串 * @return */private static String fullWidth2halfWidth(String fullWidthStr) {if (null == fullWidthStr || fullWidthStr.length() <= 0) {return "";}char[] charArray = fullWidthStr.toCharArray();// 对全角字符转换的char数组遍历for (int i = 0; i < charArray.length; ++i) {int charIntValue = (int) charArray[i];// 如果符合转换关系,将对应下标之间减掉偏移量65248;如果是空格的话,直接做转换if (charIntValue >= SBC_CHAR_START && charIntValue <= SBC_CHAR_END) {charArray[i] = (char) (charIntValue - CONVERT_STEP);} else if (charIntValue == SBC_SPACE) {charArray[i] = (char) DBC_SPACE;}}return new String(charArray).toLowerCase();}
1 0
- 使用pinyin4j获取汉字的拼音和全角半角转换
- 汉字全角半角转换
- 使用pinyin4j将汉字转换成拼音
- J2EE 使用pinyin4j实现汉字转换拼音
- pinyin4j:拼音与汉字的转换实例
- pinyin4j汉字转换拼音的工具类
- CFStringTransform的使用 :汉字转拼音、全角转半角等
- 汉字转换拼音(pinyin4j)
- 全角和半角转换
- 使用PinYin4j.jar将汉字转换为拼音使用实例
- 使用PinYin4j.jar将汉字转换为拼音
- 使用PinYin4j.jar将汉字转换为拼音
- 使用PinYin4j.jar将汉字转换为拼音
- 使用PinYin4j.jar将汉字转换为拼音
- java使用PinYin4j将汉字转换为拼音
- 使用PinYin4j.jar将汉字转换为拼音
- 使用PinYin4j.jar将汉字转换为拼音
- 使用PinYin4j.jar将汉字转换为拼音
- 数据库优化策略+SQL文复习
- String Matching in the legend
- Android Studio 中高德地图申请key和获取sha1及配置的几点方法
- PHP基础之流程控制、数组和函数
- C语言的艺术:强大的宏
- 使用pinyin4j获取汉字的拼音和全角半角转换
- cmd 清空屏幕
- CSS一些不知道的属性
- css3实现抽奖装盘效果
- Android个人学习小结2016.4
- Rest API 设计最佳实践(2)
- 【SWUSTOJ】1001: A+B again!!
- hadoop2获取job执行进度
- 禅与摩托车维修艺术(2)