开发者社区> 问答> 正文

Java讲汉字转为拼音的方法有吗?

Java讲汉字转为拼音的方法有吗?

展开
收起
陌然浅笑-支 2022-04-22 09:08:29 5078 0
2 条回答
写回答
取消 提交回答
  • 微信搜索「龙哥手记」,回复关键字:见面礼

    学习下

    2022-04-23 08:03:05
    赞同 展开评论 打赏
  • public class PinyinUtil {

    public static void main(String[] args) throws Exception { System.out.println(getPinyin("haha你笑起来真好看", " ")); System.out.println(getPinyinInitials("你笑起来真好看")); }

    /** * 将汉字转换为全拼 * * @param text 文本 * @param separator 分隔符 * @return {@link String} */ public static String getPinyin(String text, String separator) { char[] chars = text.toCharArray(); HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); // 设置大小写 format.setCaseType(HanyuPinyinCaseType.LOWERCASE); // 设置声调表示方法 format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); // 设置字母u表示方法 format.setVCharType(HanyuPinyinVCharType.WITH_V); String[] s; String rs = StringUtils.EMPTY; try { StringBuilder sb = new StringBuilder(); for (int i = 0; i < chars.length; i++) { // 判断是否为汉字字符 if (String.valueOf(chars[i]).matches("[\u4E00-\u9FA5]+")) { s = PinyinHelper.toHanyuPinyinStringArray(chars[i], format); if (s != null) { sb.append(s[0]).append(separator); continue; } } sb.append(String.valueOf(chars[i])); if ((i + 1 >= chars.length) || String.valueOf(chars[i + 1]).matches("[\u4E00-\u9FA5]+")) { sb.append(separator); } } rs = sb.substring(0, sb.length() - 1); } catch (BadHanyuPinyinOutputFormatCombination e) { e.printStackTrace(); } return rs; }

    /** * 获取汉字首字母 * * @param text 文本 * @return {@link String} */ public static String getPinyinInitials(String text) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < text.length(); i++) { char ch = text.charAt(i); String[] s = PinyinHelper.toHanyuPinyinStringArray(ch); if (s != null) { sb.append(s[0].charAt(0)); } else { sb.append(ch); } } return sb.toString(); } }

    2022-04-23 08:11:25
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载