模板一

  1. package ${enclosing_package};
  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 ${primary_type_name} {
  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. String s3 ="长";
  309. System.out.println(Arrays.toString(stringToPinyin(s3,true,",")));
  310. }
  311. }

022-pinyin4j工具类模板的更多相关文章

  1. JDBC 工具类模板c3p0

    JDBC 工具类模板 package com.itheima.sh.utils; import com.mchange.v2.c3p0.ComboPooledDataSource; import ja ...

  2. 033-JsonUtils 工具类模板

    模板一:使用的是jackson package cn.e3mall.common.utils; import java.util.List; import com.fasterxml.jackson. ...

  3. 031-CookieUtils 工具类模板

    模板一: package com.leo.common.utils; import java.io.UnsupportedEncodingException; import java.net.URLD ...

  4. pinyin4j工具类

    <!-- 导入pinyin4j --> <dependency> <groupId>com.belerweb</groupId> <artifac ...

  5. 009-MailUtils工具类模板

    版本一:JavaMail的一个工具类 package ${enclosing_package}; import java.security.GeneralSecurityException; impo ...

  6. Swift - 简单封装一个工具类模板

    创建模板类(封装一个类) 例1:新建一个名字叫做 Product 的类 Product.swift File 的内容 class Product { var name: String var desc ...

  7. 032-IDUtils 工具类模板

    模板一: package cn.e3mall.common.utils; import java.util.Random; /** * 各种id生成策略 * @title:IDUtils * @des ...

  8. DBCP连接池工具类模板

    package ${enclosing_package}; import java.io.InputStream; import java.sql.Connection; import java.sq ...

  9. 004-C3P0连接池工具类模板

    package ${enclosing_package}; import java.sql.Connection; import java.sql.ResultSet; import java.sql ...

随机推荐

  1. Bitmap压缩到指定尺寸大小,获取圆角、圆形图片

    /** * 使用Matrix将Bitmap压缩到指定大小 * @param bitmap * @param w * @param h * @return */ public static Bitmap ...

  2. Ubuntu配置ip和dns后还是不能访问外网

    https://blog.csdn.net/WFping518/article/details/81011722

  3. WM_QUERYENDSESSION与WM_ENDSESSION

    此文已由作者王荣涛授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 首先XP系统和Vista以后的系统,这两个消息的处理方式是不同的. XP系统 系统发送WM_QUERYEND ...

  4. React进阶篇(1) -- react-router4模块化

    本篇内容: 单一的路由无嵌套 多层嵌套路由 获取路径中的参数 按需加载 单一的路由无嵌套 routers.js import Home from 'components/Home'; import N ...

  5. spring boot 第一个Dome

    1.创建Maven项目 按照下面的步骤 项目创建完成后的目录结构 2. 参照Spring boot官方文档修改pom.xml 修改 maven编译的jdk版本 将spring boot设置为 pare ...

  6. PHP获取对象的纯数字属性

    php的对象属性 我们知道获取php的对象属性用箭头: echo $obj->name; 如果属性名是一个变量,那么可以用: $var = 'name'; echo $obj->$var; ...

  7. bzoj 3864: Hero meet devil(dp套dp)

    题面 给你一个只由\(AGCT\)组成的字符串\(S (|S| ≤ 15)\),对于每个\(0 ≤ .. ≤ |S|\),问 有多少个只由\(AGCT\)组成的长度为\(m(1 ≤ m ≤ 1000) ...

  8. vmware vSphere虚拟网络(一)

    为了更好的了解vSphere网络虚拟化解决方案,这里引入了一些概念,以便我们更好的了解虚拟网络. 一.网卡: 物理网卡称为vmnic,在ESXi中,第一块物理网卡叫做vmnic0,第二块叫做vmnic ...

  9. centos安装mysql57

    下载源安装文件 https://dev.mysql.com/downloads/repo/yum/ wget http://repo.mysql.com//mysql57-community-rele ...

  10. SJTU 机试 数学

    题目描述 给定n,a求最大的k,使n!可以被a^k整除但不能被a^(k+1)整除. 输入描述: 两个整数n(2<=n<=1000),a(2<=a<=1000) 输出描述: 一个 ...