pinyin4j-2.5.0.jar  使用

  1. package com.xcu.util;
  2. import net.sourceforge.pinyin4j.PinyinHelper;
  3. import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
  4. import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
  5. import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
  6. import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
  7. import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
  8. /**
  9. *
  10. * 获取汉语文字的拼音
  11. *
  12. * @author Everest
  13. * @version 1.0 23/07/2010
  14. *
  15. */
  16. public class PinyinUtil {
  17. /** 汉语拼音格式化工具类 */
  18. private static HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
  19. /**
  20. * 获取字符串内的所有汉字的汉语拼音
  21. * @param src
  22. * @return
  23. */
  24. public static String spell(String src) {
  25. format.setCaseType(HanyuPinyinCaseType.LOWERCASE); // 小写拼音字母
  26. format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); // 不加语调标识
  27. format.setVCharType(HanyuPinyinVCharType.WITH_V); // u:的声母替换为v
  28. StringBuffer sb = new StringBuffer();
  29. int strLength = src.length();
  30. try {
  31. for (int i = 0; i < strLength; i++) {
  32. // 对英文字母的处理:小写字母转换为大写,大写的直接返回
  33. char ch = src.charAt(i);
  34. if (ch >= 'a' && ch <= 'z')
  35. sb.append((char) (ch - 'a' + 'A'));
  36. if (ch >= 'A' && ch <= 'Z')
  37. sb.append(ch);
  38. // 对汉语的处理
  39. String[] arr = PinyinHelper.toHanyuPinyinStringArray(ch, format);
  40. if (arr != null && arr.length > 0)
  41. sb.append(arr[0]).append(" ");
  42. }
  43. } catch (BadHanyuPinyinOutputFormatCombination e) {
  44. e.printStackTrace();
  45. }
  46. return sb.toString();
  47. }
  48. /**
  49. * 获取字符串内的所有汉字的汉语拼音并大写每个字的首字母
  50. * @param src
  51. * @return
  52. */
  53. public static String spellWithTone(String src) {
  54. format.setCaseType(HanyuPinyinCaseType.LOWERCASE);// 小写
  55. format.setToneType(HanyuPinyinToneType.WITH_TONE_MARK);// 标声调
  56. format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);// u:的声母
  57. if (src == null) {
  58. return null;
  59. }
  60. try {
  61. StringBuilder sb = new StringBuilder();
  62. for (int i = 0; i < src.length(); i++) {
  63. // 对英文字母的处理:小写字母转换为大写,大写的直接返回
  64. char ch = src.charAt(i);
  65. if (ch >= 'a' && ch <= 'z')
  66. sb.append((char) (ch - 'a' + 'A'));
  67. if (ch >= 'A' && ch <= 'Z')
  68. sb.append(ch);
  69. // 对汉语的处理
  70. String[] arr = PinyinHelper.toHanyuPinyinStringArray(ch, format);
  71. if (arr == null || arr.length == 0) {
  72. continue;
  73. }
  74. String s = arr[0];// 不管多音字,只取第一个
  75. char c = s.charAt(0);// 大写第一个字母
  76. String pinyin = String.valueOf(c).toUpperCase().concat(s.substring(1));
  77. sb.append(pinyin).append(" ");
  78. }
  79. return sb.toString();
  80. } catch (BadHanyuPinyinOutputFormatCombination e) {
  81. e.printStackTrace();
  82. }
  83. return null;
  84. }
  85. /**
  86. * 获取字符串内的所有汉字的汉语拼音并大写每个字的首字母
  87. * @param src
  88. * @return
  89. */
  90. public static String spellNoneTone(String src) {
  91. format.setCaseType(HanyuPinyinCaseType.LOWERCASE);// 小写
  92. format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 标声调
  93. format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);// u:的声母
  94. if (src == null) {
  95. return null;
  96. }
  97. try {
  98. StringBuilder sb = new StringBuilder();
  99. for (int i = 0; i < src.length(); i++) {
  100. // 对英文字母的处理:小写字母转换为大写,大写的直接返回
  101. char ch = src.charAt(i);
  102. if (ch >= 'a' && ch <= 'z')
  103. sb.append((char) (ch - 'a' + 'A'));
  104. if (ch >= 'A' && ch <= 'Z')
  105. sb.append(ch);
  106. // 对汉语的处理
  107. String[] arr = PinyinHelper.toHanyuPinyinStringArray(ch, format);
  108. if (arr == null || arr.length == 0) {
  109. continue;
  110. }
  111. String s = arr[0];// 不管多音字,只取第一个
  112. char c = s.charAt(0);// 大写第一个字母
  113. String pinyin = String.valueOf(c).toUpperCase().concat(s.substring(1));
  114. sb.append(pinyin).append("");
  115. }
  116. return sb.toString();
  117. } catch (BadHanyuPinyinOutputFormatCombination e) {
  118. e.printStackTrace();
  119. }
  120. return null;
  121. }
  122. /**
  123. * 获取汉语第一个字的首英文字母
  124. * @param src
  125. * @return
  126. */
  127. public static String getTerm(String src){
  128. String res = spell(src);
  129. if(res!=null&&res.length()>0){
  130. return res.toUpperCase().charAt(0)+"";
  131. }else{
  132. return "OT";
  133. }
  134. }
  135. /**
  136. * @param args
  137. */
  138. public static void main(String[] args) {
  139. System.out.println("---------------------spellWithTone");
  140. System.out.println(spellWithTone("English"));
  141. System.out.println(spellWithTone("有志者事竟成,阿斯顿佛"));
  142. System.out.println(spellWithTone("中华人民共和国"));
  143. System.out.println(spellWithTone("单丽丽"));
  144. System.out.println("-----------------------------spell");
  145. System.out.println(spell("English"));
  146. System.out.println(spell("有志者事竟成,阿斯顿佛"));
  147. System.out.println(spell("中华人民共和国"));
  148. System.out.println(spell("单丽丽"));
  149. System.out.println("----------------------spellNoneTone");
  150. System.out.println(spellNoneTone("English"));
  151. System.out.println(spellNoneTone("有志者事竟成,阿斯顿佛"));
  152. System.out.println(spellNoneTone("中华人民共和国"));
  153. System.out.println(spellNoneTone("单丽丽"));
  154. System.out.println("---------------------------getTerm");
  155. System.out.println(getTerm("English"));
  156. System.out.println(getTerm("有志者事竟成,阿斯顿佛"));
  157. System.out.println(getTerm("中华人民共和国"));
  158. System.out.println(getTerm("单丽丽"));
  159. }
  160. }
package com.xcu.util;
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.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
/**
*
* 获取汉语文字的拼音
*
* @author Everest
* @version 1.0 23/07/2010
*
*/
public class PinyinUtil {
/** 汉语拼音格式化工具类 */
private static HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
/**
* 获取字符串内的所有汉字的汉语拼音
* @param src
* @return
*/
public static String spell(String src) {
format.setCaseType(HanyuPinyinCaseType.LOWERCASE); // 小写拼音字母
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); // 不加语调标识
format.setVCharType(HanyuPinyinVCharType.WITH_V); // u:的声母替换为v
StringBuffer sb = new StringBuffer();
int strLength = src.length();
try {
for (int i = 0; i < strLength; i++) {
// 对英文字母的处理:小写字母转换为大写,大写的直接返回
char ch = src.charAt(i);
if (ch >= 'a' && ch <= 'z')
sb.append((char) (ch - 'a' + 'A'));
if (ch >= 'A' && ch <= 'Z')
sb.append(ch);
// 对汉语的处理
String[] arr = PinyinHelper.toHanyuPinyinStringArray(ch, format);
if (arr != null && arr.length > 0)
sb.append(arr[0]).append(" ");
}
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
return sb.toString();
}
/**
* 获取字符串内的所有汉字的汉语拼音并大写每个字的首字母
* @param src
* @return
*/
public static String spellWithTone(String src) {
format.setCaseType(HanyuPinyinCaseType.LOWERCASE);// 小写
format.setToneType(HanyuPinyinToneType.WITH_TONE_MARK);// 标声调
format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);// u:的声母
if (src == null) {
return null;
}
try {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < src.length(); i++) {
// 对英文字母的处理:小写字母转换为大写,大写的直接返回
char ch = src.charAt(i);
if (ch >= 'a' && ch <= 'z')
sb.append((char) (ch - 'a' + 'A'));
if (ch >= 'A' && ch <= 'Z')
sb.append(ch);
// 对汉语的处理
String[] arr = PinyinHelper.toHanyuPinyinStringArray(ch, format);
if (arr == null || arr.length == 0) {
continue;
}
String s = arr[0];// 不管多音字,只取第一个
char c = s.charAt(0);// 大写第一个字母
String pinyin = String.valueOf(c).toUpperCase().concat(s.substring(1));
sb.append(pinyin).append(" ");
}
return sb.toString();
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
return null;
}
/**
* 获取字符串内的所有汉字的汉语拼音并大写每个字的首字母
* @param src
* @return
*/
public static String spellNoneTone(String src) {
format.setCaseType(HanyuPinyinCaseType.LOWERCASE);// 小写
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 标声调
format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);// u:的声母
if (src == null) {
return null;
}
try {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < src.length(); i++) {
// 对英文字母的处理:小写字母转换为大写,大写的直接返回
char ch = src.charAt(i);
if (ch >= 'a' && ch <= 'z')
sb.append((char) (ch - 'a' + 'A'));
if (ch >= 'A' && ch <= 'Z')
sb.append(ch);
// 对汉语的处理
String[] arr = PinyinHelper.toHanyuPinyinStringArray(ch, format);
if (arr == null || arr.length == 0) {
continue;
}
String s = arr[0];// 不管多音字,只取第一个
char c = s.charAt(0);// 大写第一个字母
String pinyin = String.valueOf(c).toUpperCase().concat(s.substring(1));
sb.append(pinyin).append("");
}
return sb.toString();
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
return null;
}
/**
* 获取汉语第一个字的首英文字母
* @param src
* @return
*/
public static String getTerm(String src){
String res = spell(src);
if(res!=null&&res.length()>0){
return res.toUpperCase().charAt(0)+"";
}else{
return "OT";
}
}
/**
* @param args
*/
public static void main(String[] args) {
System.out.println("---------------------spellWithTone");
System.out.println(spellWithTone("English"));
System.out.println(spellWithTone("有志者事竟成,阿斯顿佛"));
System.out.println(spellWithTone("中华人民共和国"));
System.out.println(spellWithTone("单丽丽"));
System.out.println("-----------------------------spell");
System.out.println(spell("English"));
System.out.println(spell("有志者事竟成,阿斯顿佛"));
System.out.println(spell("中华人民共和国"));
System.out.println(spell("单丽丽"));
System.out.println("----------------------spellNoneTone");
System.out.println(spellNoneTone("English"));
System.out.println(spellNoneTone("有志者事竟成,阿斯顿佛"));
System.out.println(spellNoneTone("中华人民共和国"));
System.out.println(spellNoneTone("单丽丽"));
System.out.println("---------------------------getTerm");
System.out.println(getTerm("English"));
System.out.println(getTerm("有志者事竟成,阿斯顿佛"));
System.out.println(getTerm("中华人民共和国"));
System.out.println(getTerm("单丽丽"));
}
}

实例运行效果如下:

pinyin4j-2.5.0.jar 工具类相关推荐

  1. poi报表导出4.1.0版本工具类 导出并下载

    这一段时间,由于项目上线基于稳定,所以我这边在基于我们一期迭代的分支上优化一部分我们之前没有做的功能,报表导出.本身之前用的是3.5的版本,但是由于同事要写导入,写的代码只有4.1.0的版本支持,所以 ...

  2. pinyin4j汉字转换拼音的工具类

    import net.sourceforge.pinyin4j.PinyinHelper;/*** 功能说明:汉字转换拼音工具类* * @author LZG*/ public class Pinyi ...

  3. ddmlib-25.3.0.jar IDevice类

    ddmlib获取安卓设备信息. ddmlib的版本是25.3.0 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 以下是class类 ...

  4. java 拼音 jar_Java实现的汉语拼音工具类完整实例

    本文实例讲述了Java实现的汉语拼音工具类.分享给大家供大家参考,具体如下: package test; import net.sourceforge.pinyin4j.PinyinHelper; i ...

  5. java导出类_java导出excel工具类

    java导出excel须要使用HSSFWorkbook这个类,须要导入poi-3.6-20091214.jar 工具类调用例如以下: package com.qlwb.business.util; i ...

  6. java 兼容excel_Java解析Excel工具类(兼容xls和xlsx)

    依赖jar org.apache.poi poi-ooxml 4.0.1 ExcelUtils.java package javax.utils; import java.io.File; impor ...

  7. 记录一下:Java 汉字获取拼音或首字母工具类

    记录一下:Java 汉字获取拼音或首字母工具类 Maven依赖配置 Java代码 本文主要记录一下在Java中,如何将字符串中的中文转化为拼音,获取汉字串拼音首字母,获取汉字串拼音的工具类,以及相关的 ...

  8. Word或Excel 转Pdf 工具类(License 去水印)

    Word或Excel 转Pdf 帮助类 需要引入jar包: aspose-words-15.8.0-jdk16.jar aspose-cells-8.5.2.jar 工具类 import com.as ...

  9. Android开发之dp转像素,像素转换为dp工具类,详细代码,带有源文件下载地址。...

    2019独角兽企业重金招聘Python工程师标准>>> import android.content.Context; /** * @author 官网:http://www.93s ...

最新文章

  1. NBT:宏基因组二、三代混合组装软件OPERA-MS
  2. 给Eclipse提速的7个技巧(转)
  3. Android动态加载插件APK
  4. python心理学实验程序_psychopy coder模式编写心理试验程序 字符程序和记录反应时...
  5. 如何成为云原生时代的卓越架构师
  6. android 拦截外拨电话,Android拦截外拨电话程序示例
  7. java.lang.Math类的API介绍
  8. 【渝粤教育】广东开放大学 供应链与物流管理 形成性考核 (56)
  9. 关于最近很火的“快用苹果助手”和“pp助手”使用正版软件闪退问题的说明
  10. 汽车之家所有车型价格爬虫
  11. 基于mysql的报表工具有哪些?值得推荐的mysql报表工具
  12. Python3,1行代码,去除图片的背景图,确实香。
  13. 机器学习实战读书笔记-朴素贝叶斯
  14. python求解组合数_6-2 jmu-python-组合数据类型-1.计算坐标点欧氏距离 (10分)
  15. Spring框架基础(2)----Bean的创建及标签属性
  16. JAVA高并发学习笔记(二) 多线程基础
  17. 关于MFC修改CButton按钮的颜色、背景、字体
  18. 赋能 打造应对不确定性的敏捷团队 pdf_“复”有诗书气自华之赋能 —— 打造应对不确定性的敏捷团队...
  19. Redux 入门教程,应用的状态管理器
  20. 《被讨厌的勇气》- 让干涉你的人见鬼去吧

热门文章

  1. Ubuntu fcitx输入法占用内存越来越大(超过1G)
  2. 俄版“支付宝”来了 俄互联网巨头Yandex推出全新支付服务
  3. NRF51822裸机TIMER学习笔记
  4. Elasticsearch 如何实现时间差查询?
  5. linux命令之ls
  6. busybox的init
  7. python datetime strftime_datetime.strftime时间输出转换
  8. oracle查询某个用户下所有表记录总数
  9. 机器学习-周志华-课后习题答案-决策树
  10. Win 10系统安装3ds max 2014