1. <!-- 导入pinyin4j -->
  2. <dependency>
  3. <groupId>com.belerweb</groupId>
  4. <artifactId>pinyin4j</artifactId>
  5. <version>2.5.0</version>
  6. </dependency>
  1.   
  1. PinYin4jUtils 工具类
  1. 1 package cn.itcast.bos.utils;
  2.  
  3. import java.util.Arrays;
  4.  
  5. import net.sourceforge.pinyin4j.PinyinHelper;
  6. import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
  7. import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
  8. import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
  9. import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
  10.  
  11. public class PinYin4jUtils {
  12. /**
  13. * 将字符串转换成拼音数组
  14. *
  15. * @param src
  16. * @return
  17. */
  18. public static String[] stringToPinyin(String src) {
  19. return stringToPinyin(src, false, null);
  20. }
  21.  
  22. /**
  23. * 将字符串转换成拼音数组
  24. *
  25. * @param src
  26. * @return
  27. */
  28. public static String[] stringToPinyin(String src, String separator) {
  29.  
  30. return stringToPinyin(src, true, separator);
  31. }
  32.  
  33. /**
  34. * 将字符串转换成拼音数组
  35. *
  36. * @param src
  37. * @param isPolyphone
  38. * 是否查出多音字的所有拼音
  39. * @param separator
  40. * 多音字拼音之间的分隔符
  41. * @return
  42. */
  43. public static String[] stringToPinyin(String src, boolean isPolyphone,
  44. String separator) {
  45. // 判断字符串是否为空
  46. if ("".equals(src) || null == src) {
  47. return null;
  48. }
  49. char[] srcChar = src.toCharArray();
  50. int srcCount = srcChar.length;
  51. String[] srcStr = new String[srcCount];
  52.  
  53. for (int i = 0; i < srcCount; i++) {
  54. srcStr[i] = charToPinyin(srcChar[i], isPolyphone, separator);
  55. }
  56. return srcStr;
  57. }
  58.  
  59. /**
  60. * 将单个字符转换成拼音
  61. *
  62. * @param src
  63. * @return
  64. */
  65. public static String charToPinyin(char src, boolean isPolyphone,
  66. String separator) {
  67. // 创建汉语拼音处理类
  68. HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
  69. // 输出设置,大小写,音标方式
  70. defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
  71. defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
  72.  
  73. StringBuffer tempPinying = new StringBuffer();
  74.  
  75. // 如果是中文
  76. if (src > 128) {
  77. try {
  78. // 转换得出结果
  79. String[] strs = PinyinHelper.toHanyuPinyinStringArray(src,
  80. defaultFormat);
  81.  
  82. // 是否查出多音字,默认是查出多音字的第一个字符
  83. if (isPolyphone && null != separator) {
  84. for (int i = 0; i < strs.length; i++) {
  85. tempPinying.append(strs[i]);
  86. if (strs.length != (i + 1)) {
  87. // 多音字之间用特殊符号间隔起来
  88. tempPinying.append(separator);
  89. }
  90. }
  91. } else {
  92. tempPinying.append(strs[0]);
  93. }
  94.  
  95. } catch (BadHanyuPinyinOutputFormatCombination e) {
  96. e.printStackTrace();
  97. }
  98. } else {
  99. tempPinying.append(src);
  100. }
  101.  
  102. return tempPinying.toString();
  103.  
  104. }
  105.  
  106. public static String hanziToPinyin(String hanzi) {
  107. return hanziToPinyin(hanzi, " ");
  108. }
  109.  
  110. /**
  111. * 将汉字转换成拼音
  112. *
  113. * @param hanzi
  114. * @param separator
  115. * @return
  116. */
  117. public static String hanziToPinyin(String hanzi, String separator) {
  118.  
  119. // 创建汉语拼音处理类
  120. HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
  121. // 输出设置,大小写,音标方式
  122. defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
  123. defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
  124.  
  125. String pinyingStr = "";
  126. try {
  127. pinyingStr = PinyinHelper.toHanyuPinyinString(hanzi, defaultFormat,
  128. separator);
  129. } catch (BadHanyuPinyinOutputFormatCombination e) {
  130. // TODO Auto-generated catch block
  131. e.printStackTrace();
  132. }
  133. return pinyingStr;
  134. }
  135.  
  136. /**
  137. * 将字符串数组转换成字符串
  138. *
  139. * @param str
  140. * @param separator
  141. * 各个字符串之间的分隔符
  142. * @return
  143. */
  144. public static String stringArrayToString(String[] str, String separator) {
  145. StringBuffer sb = new StringBuffer();
  146. for (int i = 0; i < str.length; i++) {
  147. sb.append(str[i]);
  148. if (str.length != (i + 1)) {
  149. sb.append(separator);
  150. }
  151. }
  152. return sb.toString();
  153. }
  154.  
  155. /**
  156. * 简单的将各个字符数组之间连接起来
  157. *
  158. * @param str
  159. * @return
  160. */
  161. public static String stringArrayToString(String[] str) {
  162. return stringArrayToString(str, "");
  163. }
  164.  
  165. /**
  166. * 将字符数组转换成字符串
  167. *
  168. * @param str
  169. * @param separator
  170. * 各个字符串之间的分隔符
  171. * @return
  172. */
  173. public static String charArrayToString(char[] ch, String separator) {
  174. StringBuffer sb = new StringBuffer();
  175. for (int i = 0; i < ch.length; i++) {
  176. sb.append(ch[i]);
  177. if (ch.length != (i + 1)) {
  178. sb.append(separator);
  179. }
  180. }
  181. return sb.toString();
  182. }
  183.  
  184. /**
  185. * 将字符数组转换成字符串
  186. *
  187. * @param str
  188. * @return
  189. */
  190. public static String charArrayToString(char[] ch) {
  191. return charArrayToString(ch, " ");
  192. }
  193.  
  194. /**
  195. * 取汉字的首字母
  196. *
  197. * @param src
  198. * @param isCapital
  199. * 是否是大写
  200. * @return
  201. */
  202. public static char[] getHeadByChar(char src, boolean isCapital) {
  203. // 如果不是汉字直接返回
  204. if (src <= 128) {
  205. return new char[] { src };
  206. }
  207. // 获取所有的拼音
  208. String[] pinyingStr = PinyinHelper.toHanyuPinyinStringArray(src);
  209.  
  210. // 创建返回对象
  211. int polyphoneSize = pinyingStr.length;
  212. char[] headChars = new char[polyphoneSize];
  213. int i = 0;
  214. // 截取首字符
  215. for (String s : pinyingStr) {
  216. char headChar = s.charAt(0);
  217. // 首字母是否大写,默认是小写
  218. if (isCapital) {
  219. headChars[i] = Character.toUpperCase(headChar);
  220. } else {
  221. headChars[i] = headChar;
  222. }
  223. i++;
  224. }
  225.  
  226. return headChars;
  227. }
  228.  
  229. /**
  230. * 取汉字的首字母(默认是大写)
  231. *
  232. * @param src
  233. * @return
  234. */
  235. public static char[] getHeadByChar(char src) {
  236. return getHeadByChar(src, true);
  237. }
  238.  
  239. /**
  240. * 查找字符串首字母
  241. *
  242. * @param src
  243. * @return
  244. */
  245. public static String[] getHeadByString(String src) {
  246. return getHeadByString(src, true);
  247. }
  248.  
  249. /**
  250. * 查找字符串首字母
  251. *
  252. * @param src
  253. * @param isCapital
  254. * 是否大写
  255. * @return
  256. */
  257. public static String[] getHeadByString(String src, boolean isCapital) {
  258. return getHeadByString(src, isCapital, null);
  259. }
  260.  
  261. /**
  262. * 查找字符串首字母
  263. *
  264. * @param src
  265. * @param isCapital
  266. * 是否大写
  267. * @param separator
  268. * 分隔符
  269. * @return
  270. */
  271. public static String[] getHeadByString(String src, boolean isCapital,
  272. String separator) {
  273. char[] chars = src.toCharArray();
  274. String[] headString = new String[chars.length];
  275. int i = 0;
  276. for (char ch : chars) {
  277.  
  278. char[] chs = getHeadByChar(ch, isCapital);
  279. StringBuffer sb = new StringBuffer();
  280. if (null != separator) {
  281. int j = 1;
  282.  
  283. for (char ch1 : chs) {
  284. sb.append(ch1);
  285. if (j != chs.length) {
  286. sb.append(separator);
  287. }
  288. j++;
  289. }
  290. } else {
  291. sb.append(chs[0]);
  292. }
  293. headString[i] = sb.toString();
  294. i++;
  295. }
  296. return headString;
  297. }
  298.  
  299. public static void main(String[] args) {
  300. // pin4j 简码 和 城市编码
  301. String s1 = "中华人民共和国";
  302. String[] headArray = getHeadByString(s1); // 获得每个汉字拼音首字母
  303. System.out.println(Arrays.toString(headArray));
  304.  
  305. String s2 = "长城";
  306. System.out.println(Arrays.toString(stringToPinyin(s2, true, ",")));
  307.  
  308. }
  309. }

pinyin4j工具类的更多相关文章

  1. java中常用的工具类(二)

    下面继续分享java中常用的一些工具类,希望给大家带来帮助! 1.FtpUtil           Java   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...

  2. Java汉字转成汉语拼音工具类

    Java汉字转成汉语拼音工具类,需要用到pinyin4j.jar包. import net.sourceforge.pinyin4j.PinyinHelper; import net.sourcefo ...

  3. java PinYinUtils 拼音工具类

    package com.sicdt.library.core.utils; import java.util.HashSet; import java.util.Set; import net.sou ...

  4. java:工具(汉语转拼音,压缩包,EXCEL,JFrame窗口和文件选择器,SFTP上传下载,FTP工具类,SSH)

    1.汉语转拼音: import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuP ...

  5. java常用工具类(二)

    1.FtpUtil package com.itjh.javaUtil; import java.io.File; import java.io.FileOutputStream; import ja ...

  6. Java基础Map接口+Collections工具类

    1.Map中我们主要讲两个接口 HashMap  与   LinkedHashMap (1)其中LinkedHashMap是有序的  怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...

  7. Android—关于自定义对话框的工具类

    开发中有很多地方会用到自定义对话框,为了避免不必要的城府代码,在此总结出一个工具类. 弹出对话框的地方很多,但是都大同小异,不同无非就是提示内容或者图片不同,下面这个类是将提示内容和图片放到了自定义函 ...

  8. [转]Java常用工具类集合

    转自:http://blog.csdn.net/justdb/article/details/8653166 数据库连接工具类——仅仅获得连接对象 ConnDB.java package com.ut ...

  9. js常用工具类.

    一些js的工具类 复制代码 /** * Created by sevennight on 15-1-31. * js常用工具类 */ /** * 方法作用:[格式化时间] * 使用方法 * 示例: * ...

随机推荐

  1. zabbix 监控ipmi

    一,配置ipmi yum -y install OpenIPMI OpenIPMI-devel ipmitool freeipmi 登入IDARAC 在服务端测试是否可以获得数据 ipmitool - ...

  2. 抽象工厂方法模式(Abstract Factory Pattern)

    Provide an interface for creating families of related or dependent objects without specifying their ...

  3. 绘图神器-matplotlib入门

    这次,让我们使用一个非常有名且十分有趣的玩意儿来完成今天的任务,它就是jupyter. 一.安装jupyter matplotlib入门之前,先安装好jupyter.这里只提供最为方便快捷的安装方式: ...

  4. 用jquery来实现正反选选择框checkbox的小示例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. WebAssembly简单指导---译

    开发者指导 本页面提供一步一步的操作将一个简单的程序编译成webassembly 前提要求 为了编译成webAssembly,需要提前安装一些工具: Git.在Linux和OSX下已自带了Git,在W ...

  6. 针对在webview模式中,小米魅族手机不支持html5原生video的control的解决办法![原创]

    其实,解决办法就是,重新写个control控制功能,.同样用流行的video.js可以实现 第一步就是增加个播放的图片..要不然没有按钮多难看! <div class="videoDi ...

  7. Sql Server 锁 排它锁 更新锁 共享锁

    引用别人的.有时间整体整理下. 引用地址:http://www.cnblogs.com/wenjl520/archive/2012/08/24/2654412.html 锁的概述 一. 为什么要引入锁 ...

  8. Java基础之 学java从宝宝的命令行做起

    JAVA学习笔记 JAVA命令行 在当前文件的命令行下 编译:输入命令javac GetGreeting.java 执行 命令 Java GetGreeting 有package包的程序 1.到文件当 ...

  9. 面试基础(二)-mem函数

    常考的函数有下面三个,memset,memcpy,memmove,一定要记住三个函数的函数原型,熟记返回值类型和参数类型,当然也不能忘记参数检查   memset #include<iostre ...

  10. 【JS 综合】JS综合

    视频教程链接:http://www.xuexi111.com/s/javascript/ 张孝祥:http://www.21edu8.com/pcnet/programming/26685/