ChineseCharToEnUtil.java 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package com.huimv.admin.common.utils;
  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. public class ChineseCharToEnUtil {
  9. /**
  10. * 将字符串中的中文转化为拼音,其他字符不变
  11. *
  12. * @param inputString
  13. * @return
  14. */
  15. public static String getPingYin(String inputString) {
  16. HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
  17. format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
  18. format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
  19. format.setVCharType(HanyuPinyinVCharType.WITH_V);
  20. char[] input = inputString.trim().toCharArray();
  21. String output = "";
  22. try {
  23. for (int i = 0; i < input.length; i++) {
  24. if (Character.toString(input[i]).matches("[\\u4E00-\\u9FA5]+")) {
  25. String[] temp = PinyinHelper.toHanyuPinyinStringArray(input[i], format);
  26. output += temp[0];
  27. } else
  28. output += Character.toString(input[i]);
  29. }
  30. } catch (BadHanyuPinyinOutputFormatCombination e) {
  31. e.printStackTrace();
  32. }
  33. return output;
  34. }
  35. /**
  36. * 获取汉字串拼音首字母,英文字符不变
  37. * @param chinese 汉字串
  38. * @return 汉语拼音首字母
  39. */
  40. public static String getFirstSpell(String chinese) {
  41. StringBuffer pybf = new StringBuffer();
  42. char[] arr = chinese.toCharArray();
  43. HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
  44. defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
  45. defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
  46. for (int i = 0; i < arr.length; i++) {
  47. if (arr[i] > 128) {
  48. try {
  49. String[] temp = PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat);
  50. if (temp != null && temp.length > 0){
  51. pybf.append(temp[0].charAt(0));
  52. }
  53. } catch (BadHanyuPinyinOutputFormatCombination e) {
  54. e.printStackTrace();
  55. }
  56. } else {
  57. pybf.append(arr[i]);
  58. }
  59. }
  60. return pybf.toString().replaceAll("\\W", "").trim();
  61. }
  62. /**
  63. * 获取汉字串拼音,英文字符不变
  64. * @param chinese 汉字串
  65. * @return 汉语拼音
  66. */
  67. public static String getFullSpell(String chinese) {
  68. StringBuffer pybf = new StringBuffer();
  69. char[] arr = chinese.toCharArray();
  70. HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
  71. defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
  72. defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
  73. for (int i = 0; i < arr.length; i++) {
  74. if (arr[i] > 128) {
  75. try {
  76. pybf.append(PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat)[0]);
  77. } catch (BadHanyuPinyinOutputFormatCombination e) {
  78. e.printStackTrace();
  79. }
  80. } else {
  81. pybf.append(arr[i]);
  82. }
  83. }
  84. return pybf.toString();
  85. }
  86. }