汉字转拼音(pinyin4j)
2016-07-15 13:03
274 查看
1、引入依赖
2、代码
<dependency> <groupId>pinyin4j.sourceforge.net</groupId> <artifactId>pinyin4j</artifactId> <version>2.5.0</version> </dependency>
2、代码
package net.biocloud.social.management.utils; import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; import net.sourceforge.pinyin4j.format.HanyuPinyinToneType; import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class ChineseToEnglishHelper { private static final Logger LOG = LoggerFactory.getLogger(ChineseToEnglishHelper.class); /** * 姓名转换为拼音,如胡八一, BaYi Hu * * @param realName * @return */ public static String chineseToPinyin(String realName) { StringBuffer pybf = new StringBuffer(); char[] arr = realName.trim().toCharArray(); HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat(); defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE); defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); String surname = ""; for (int i = 0; i < arr.length; i++) { if (arr[i] > 128) { try { //单个汉字转为拼音 String[] _t = PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat); if (i == 0) { surname = _t[0].substring(0, 1).toUpperCase() + _t[0].substring(1, _t[0].length()); } else { pybf.append(_t[0].substring(0, 1).toUpperCase() + _t[0].substring(1, _t[0].length())); } if (i == arr.length - 1) { pybf.append(" " + surname); } } catch (BadHanyuPinyinOutputFormatCombination e) { LOG.info("chinese to english error, this is message" + e.getMessage()); throw new RuntimeException("chinese to english error"); } } else { pybf.append(arr[i]); } } return pybf.toString().trim(); } /** * 姓名转换为拼音,如胡八一, B Y Hu * * @param realName * @return */ public static String chineseToEnglish(String realName) { StringBuffer pybf = new StringBuffer(); char[] arr = realName.trim().toCharArray(); HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat(); defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE); defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); String surname = ""; for (int i = 0; i < arr.length; i++) { if (arr[i] > 128) { try { //单个汉字转为拼音 String[] _t = PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat); if (i == 0) { surname = _t[0].substring(0, 1).toUpperCase() + _t[0].substring(1, _t[0].length()); } else { pybf.append((arr.length == 2) ? _t[0].substring(0, 1).toUpperCase() : (i == 1) ? _t[0].substring(0, 1).toUpperCase() + " " : _t[0].substring(0, 1).toUpperCase()); } if (i == arr.length - 1) { pybf.append(" " + surname); } } catch (BadHanyuPinyinOutputFormatCombination e) { LOG.info("chinese to pinyin error, this is message" + e.getMessage()); throw new RuntimeException("chinese to pinyin error"); } } else { pybf.append(arr[i]); } } return pybf.toString().trim(); } public static void main(String arg[]) { System.out.println(chineseToPinyin("胡八一")); System.out.println(chineseToEnglish("胡八一")); } }
相关文章推荐
- 51 nod 1203 JZPLCM
- ORACLE 如何查看索引重建进度情况
- 迭代与递归的区别
- Curl POST to HTTPS url gives SSLRead() error:curl: (56) SSLRead() return error -9806
- Qt creator 使用 qwt 控件
- 使用Maven Hibernate5 之反向工程
- Linux/CentOS优化配置 汇总
- Linux/CentOS配置:使用yum update更新时不升级内核的方法
- 图优化理论与g2o的使用(3)
- 4GL是什么?计算机辅助软件工程CASE是什么?
- 欢迎使用CSDN-markdown编辑器
- 框架搭建
- 希腊字母发音表
- android嵌入式
- 一些特殊的URI编码字符
- 免杀
- css rect
- 源码分析查看
- 向上兼容与向下兼容
- webpasser爬虫框架自定义处理链工具