java中获取中文拼音(全拼)和中文首字母 您所在的位置:网站首页 tuⅰjian的拼音 java中获取中文拼音(全拼)和中文首字母

java中获取中文拼音(全拼)和中文首字母

2024-07-15 09:27| 来源: 网络整理| 查看: 265

目录 一、引入依赖二、代码三、解释1、创建格式化对象HanyuPinyinOutputFormat2、设置输出结果的大小写格式3、设置声调格式4、进行汉字转拼音操作 四、作用

一、引入依赖 com.belerweb pinyin4j 2.5.0 二、代码 /** * 获取中文全拼 * * @param name 需要转换的中文 * @return 全拼结果 **/ public static String getFullPinyin(String name) { // 创建格式化对象 HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat(); //设置大小写格式 outputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE); //设置声调格式 outputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); // 放置输入结果 StringBuilder result = new StringBuilder(); // 字符数组 char[] charArray = name.toCharArray(); // 遍历字符 for (char c : charArray) { // 中文会被变成全拼,非中文会被直接拼接在结果字符串中 if (Character.toString(c).matches("[\\u4E00-\\u9FA5]+")) { String[] pinyinArray = new String[0]; try { pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c, outputFormat); } catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) { badHanyuPinyinOutputFormatCombination.printStackTrace(); } if (pinyinArray != null) { result.append(pinyinArray[0]); } } else { result.append(c); } } return result.toString(); } /** * 获取中文首字母 * * @param name 需要转换的中文 * @return 首字母结果 **/ public static String getPinyinInitial(String name) { // 创建格式化对象 HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat(); //设置大小写格式 outputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE); //设置声调格式 outputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); // 放置输入结果 StringBuilder result = new StringBuilder(); // 字符数组 char[] charArray = name.toCharArray(); // 遍历字符 for (char c : charArray) { // 中文会被变成拼音首字母,非中文会被直接拼接在结果字符串中 if (Character.toString(c).matches("[\\u4E00-\\u9FA5]+")) { String[] pinyinArray = new String[0]; try { pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c, outputFormat); } catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) { badHanyuPinyinOutputFormatCombination.printStackTrace(); } if (pinyinArray != null) { result.append(pinyinArray[0].charAt(0)); } } else { result.append(c); } } return result.toString(); } 三、解释 1、创建格式化对象HanyuPinyinOutputFormat HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat(); 2、设置输出结果的大小写格式 outputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);

括号中的参数有两个选择项,分别是:HanyuPinyinCaseType.LOWERCASE( 转换后以小写方式输出)、HanyuPinyinCaseType.UPPERCASE(转换后以大写方式输出)

3、设置声调格式 outputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);

括号中的参数有三个选择项,分别是:HanyuPinyinToneType.WITHOUT_TONE(无声调表示,例如:liu)、HanyuPinyinToneType.WITH_TONE_NUMBER(用数字表示声调,例如:liu2)、HanyuPinyinToneType.WITH_TONE_MARK(用声调符号表示,例如:liú)

如果选择HanyuPinyinToneType.WITH_TONE_MARK(用声调符号表示,例如:liú)抓中方式展示,还可以对展示值做进一步的设置,例如:

outputFormat.setVCharType(HanyuPinyinVCharType); 括号中的参数可以有三个选择项,分别是:HanyuPinyinVCharType.WITH_U_UNICODE(以拼音格式表示,例如:以ü表示)、HanyuPinyinVCharType.WITH_U_AND_COLON(以U和一个冒号表示该拼音,例如:lu:)、HanyuPinyinVCharType.WITH_V(以V表示该字符,例如:lv)

4、进行汉字转拼音操作 String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c, outputFormat);

数组中只有第一个元素有值,所以只用取出下标为0的结果,记得处理抛出的异常

四、作用

上述两个功能在即时通讯产品中应用比较广泛,比如微信就是一个很好的例子,你可以尝试使用全拼或者首字母组合去微信搜索框中搜索,你会发现你能找到想要的结果,我猜测在用户注册的时候,微信会将用户名称、用户名称全拼、用户名称首字母拼写都存入了数据库或者搜索引擎中



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有