java通讯录获取汉字首字母

时间:2023-11-10 10:00:20

1.本文只是使用了pinyin4J的主要功能,还有更多更好耍的功能,大家可以去研究官网文档。哈哈

2.pinyin4j的官方下载地址:https://sourceforge.net/projects/pinyin4j/files/

3.我们这里使用的版本是 pinyin4j 2.5.0

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

添加好工具类后,在程序中调用:

  1. //要获取的字段
  2. String szm = PinYinUtil.getFirstSpell(String string);
  3. //截取第一位
  4. String yis = szm.substring(0, 1);
  5. //输出结果并且把获取到的字母转换成大写
  6. System.out.println(yis.toUpperCase());