当前位置:   article > 正文

拼音工具类_名字首字母提取

名字首字母提取
  1. import net.sourceforge.pinyin4j.PinyinHelper;
  2. import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
  3. import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
  4. import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
  5. import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
  6. import org.apache.commons.lang3.StringUtils;
  7. /**
  8. * 拼音工具类
  9. *
  10. * @author ZhuLei
  11. * @date 2016年11月14日
  12. */
  13. public class PinYinUtils {
  14. public static enum Type {
  15. UPPERCASE, // 全部大写
  16. LOWERCASE, // 全部小写
  17. FIRSTUPPER // 首字母大写
  18. }
  19. /**
  20. * 获取姓名首字母,英文字符不变
  21. *
  22. * @author ZhuLei,2016年11月14日上午10:09:32
  23. * @param chinese
  24. * 汉字串
  25. * @param caseType
  26. * 大小写类型
  27. * @return 汉语拼音首字母
  28. */
  29. public static String getNameFirstSpell(String chinese, Type caseType) {
  30. StringBuffer pybf = new StringBuffer();
  31. char[] arr = chinese.toCharArray();
  32. HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
  33. if (caseType == Type.UPPERCASE) {
  34. defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);
  35. } else {
  36. defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
  37. }
  38. defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
  39. for (int i = 0; i < arr.length; i++) {
  40. if (arr[i] > 128) {
  41. try {
  42. // 多音字
  43. String d_y_z = DuoYinZiUtil.get(arr[i]);
  44. String[] temp = PinyinHelper.toHanyuPinyinStringArray(
  45. arr[i], defaultFormat);
  46. if (temp != null) {
  47. if (StringUtils.isNotEmpty(d_y_z)) {
  48. d_y_z = d_y_z.toUpperCase();
  49. for (String t : temp) {
  50. String tu = t.toUpperCase();
  51. if (d_y_z.equals(tu)) {
  52. pybf.append(t.charAt(0));
  53. break;
  54. }
  55. }
  56. } else {
  57. pybf.append(temp[0].charAt(0));
  58. }
  59. break;
  60. }
  61. } catch (BadHanyuPinyinOutputFormatCombination e) {
  62. e.printStackTrace();
  63. }
  64. } else {
  65. if (arr[i] > 'A' && arr[i] < 'z') {
  66. pybf.append(arr[i]);
  67. break;
  68. }
  69. }
  70. }
  71. String result = "";
  72. if (caseType == Type.UPPERCASE) {
  73. result = pybf.toString().toUpperCase();
  74. } else {
  75. result = pybf.toString().toLowerCase();
  76. }
  77. return result.replaceAll("\\W", "").trim();
  78. }
  79. /**
  80. * 获取姓名全拼,英文字符不变
  81. *
  82. * @author ZhuLei,2016年11月14日上午10:09:19
  83. * @param chinese
  84. * 汉字串
  85. * @param splitStr
  86. * 分隔符
  87. * @param caseType
  88. * 大小写类型
  89. * @return 汉语拼音首字母
  90. */
  91. public static String getNameAllSpell(String chinese, String splitStr,
  92. Type caseType) {
  93. StringBuffer pybf = new StringBuffer();
  94. char[] arr = chinese.toCharArray();
  95. HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
  96. if (caseType == Type.UPPERCASE) {
  97. defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);
  98. } else {
  99. defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
  100. }
  101. defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
  102. for (int i = 0; i < arr.length; i++) {
  103. if (arr[i] > 128) {
  104. try {
  105. // 多音字
  106. String d_y_z = DuoYinZiUtil.get(arr[i]);
  107. String[] temp = PinyinHelper.toHanyuPinyinStringArray(
  108. arr[i], defaultFormat);
  109. if (temp != null) {
  110. if (i > 0) {
  111. pybf.append(splitStr);
  112. }
  113. if (StringUtils.isNotEmpty(d_y_z)) {
  114. d_y_z = d_y_z.toUpperCase();
  115. for (String t : temp) {
  116. String tu = t.toUpperCase();
  117. if (d_y_z.equals(tu)) {
  118. if (caseType == Type.FIRSTUPPER) {
  119. t = t.toUpperCase().charAt(0)
  120. + t.substring(1);
  121. }
  122. pybf.append(t);
  123. break;
  124. }
  125. }
  126. } else {
  127. String t = temp[0];
  128. if (caseType == Type.FIRSTUPPER) {
  129. t = temp[0].toUpperCase().charAt(0)
  130. + t.substring(1);
  131. }
  132. pybf.append(t);
  133. }
  134. }
  135. } catch (BadHanyuPinyinOutputFormatCombination e) {
  136. e.printStackTrace();
  137. }
  138. } else {
  139. pybf.append(arr[i]);
  140. }
  141. }
  142. return pybf.toString().trim();
  143. }
  144. /**
  145. * 获取首字母,英文字符不变
  146. *
  147. * @author Xushuai,2016年11月16日 下午5:38:19
  148. * @param chinese
  149. * @param caseType
  150. * @return
  151. */
  152. public static String getFirstSpell(String chinese, Type caseType) {
  153. StringBuffer pybf = new StringBuffer();
  154. char[] arr = chinese.toCharArray();
  155. HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
  156. if (caseType == Type.UPPERCASE) {
  157. defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);
  158. } else {
  159. defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
  160. }
  161. defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
  162. for (int i = 0; i < arr.length; i++) {
  163. if (arr[i] > 128) {
  164. try {
  165. String[] temp = PinyinHelper.toHanyuPinyinStringArray(
  166. arr[i], defaultFormat);
  167. if (temp != null) {
  168. pybf.append(temp[0].charAt(0));
  169. break;
  170. }
  171. } catch (BadHanyuPinyinOutputFormatCombination e) {
  172. e.printStackTrace();
  173. }
  174. } else {
  175. if (arr[i] > 'A' && arr[i] < 'z') {
  176. pybf.append(arr[i]);
  177. break;
  178. }
  179. }
  180. }
  181. String result = "";
  182. if (caseType == Type.UPPERCASE) {
  183. result = pybf.toString().toUpperCase();
  184. } else {
  185. result = pybf.toString().toLowerCase();
  186. }
  187. return result.replaceAll("\\W", "").trim();
  188. }
  189. /**
  190. * 获取全拼,英文字符不变
  191. *
  192. * @author Xushuai,2016年11月16日 下午5:40:11
  193. * @param chinese
  194. * @param splitStr
  195. * @param caseType
  196. * @return
  197. */
  198. public static String getAllSpell(String chinese, String splitStr,
  199. Type caseType) {
  200. StringBuffer pybf = new StringBuffer();
  201. char[] arr = chinese.toCharArray();
  202. HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
  203. if (caseType == Type.UPPERCASE) {
  204. defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);
  205. } else {
  206. defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
  207. }
  208. defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
  209. for (int i = 0; i < arr.length; i++) {
  210. if (arr[i] > 128) {
  211. try {
  212. String[] temp = PinyinHelper.toHanyuPinyinStringArray(
  213. arr[i], defaultFormat);
  214. if (temp != null) {
  215. if (i > 0) {
  216. pybf.append(splitStr);
  217. }
  218. String t = temp[0];
  219. if (caseType == Type.FIRSTUPPER) {
  220. t = temp[0].toUpperCase().charAt(0)
  221. + t.substring(1);
  222. }
  223. pybf.append(t);
  224. }
  225. } catch (BadHanyuPinyinOutputFormatCombination e) {
  226. e.printStackTrace();
  227. }
  228. } else {
  229. pybf.append(arr[i]);
  230. }
  231. }
  232. return pybf.toString().trim();
  233. }
  234. /**
  235. * 测试main方法
  236. *
  237. * @author ZhuLei,2016年11月14日上午10:40:45
  238. * @param args
  239. */
  240. public static void main(String[] args) {
  241. // 只取姓名首字母大写
  242. System.out.println(getNameFirstSpell("单棉麻", Type.UPPERCASE));
  243. // 只取姓名首字母小写
  244. System.out.println(getNameFirstSpell("单棉麻", Type.LOWERCASE));
  245. // 全拼姓名大写
  246. System.out.println(getNameAllSpell("单棉麻", "-", Type.UPPERCASE));
  247. // 全拼姓名小写
  248. System.out.println(getNameAllSpell("单棉麻", "-", Type.LOWERCASE));
  249. // 全拼姓名首字母大写
  250. System.out.println(getNameAllSpell("单棉麻", "-", Type.FIRSTUPPER));
  251. // 只取首字母大写
  252. System.out.println(getFirstSpell("单棉麻", Type.UPPERCASE));
  253. // 只取首字母小写
  254. System.out.println(getFirstSpell("单棉麻", Type.LOWERCASE));
  255. // 全拼大写
  256. System.out.println(getAllSpell("单棉麻", "-", Type.UPPERCASE));
  257. // 全拼小写
  258. System.out.println(getAllSpell("单棉麻", "-", Type.LOWERCASE));
  259. // 全拼首字母大写
  260. System.out.println(getAllSpell("单棉麻", "-", Type.FIRSTUPPER));
  261. }
  262. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/321673
推荐阅读
相关标签
  

闽ICP备14008679号