pinyin4j 拼音中文工具类
2017-04-11 17:31
288 查看
需要添加pinyin4j-2.5.0.jar
import com.acmenxd.logger.Logger; import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; import net.sourceforge.pinyin4j.format.HanyuPinyinToneType; import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType; import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; /** * @author AcmenXD * @version v1.0 * @github https://github.com/AcmenXD * @date 2016/12/15 16:10 * @detail 拼音工具类 */ public class PinYinUtils { /** * 将inStr中的中文转化为拼音,其他字符保持不变 * * 中文转换的拼音为 小写字母 */ public static String parsePinyin(String inStr) { HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); format.setCaseType(HanyuPinyinCaseType.LOWERCASE); format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); format.setVCharType(HanyuPinyinVCharType.WITH_V); char[] input = inStr.trim().toCharArray(); StringBuilder output = new StringBuilder(); try { for (int i = 0; i < input.length; i++) { if (Character.toString(input[i]).matches( "[\\u4E00-\\u9FA5]+")) { String[] temp = PinyinHelper.toHanyuPinyinStringArray( input[i], format); if (temp != null && temp.length > 0) { output.append(temp[0]); } else { Logger.e("parsePinyin ? " + inStr); } } else output.append(Character.toString(input[i])); } } catch (BadHanyuPinyinOutputFormatCombination pE) { Logger.e(pE); } return output.toString(); } /** * 将inStr的中文字符,转换为中文拼音的首字母,其他字符保持不变 * * 中文转换的首字母为 大写字母 */ public static String parsePinyinToFirst(String inStr) { String pinyinName = ""; char[] nameChar = inStr.toCharArray(); HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat(); defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE); defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); for (int i = 0; i < nameChar.length; i++) { if (nameChar[i] > 128) { try { pinyinName += PinyinHelper.toHanyuPinyinStringArray( nameChar[i], defaultFormat)[0].charAt(0); } catch (BadHanyuPinyinOutputFormatCombination pE) { Logger.e(pE); } } else { pinyinName += nameChar[i]; } } return pinyinName; } /** * 判断字符是否是中文 */ public static boolean isChinese(char c) { Character.UnicodeBlock ub = Character.UnicodeBlock.of(c); if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) { return true; } return false; } }
相关文章推荐
- 【code】java的中文转拼音工具类
- 使用pinyin4j将中文转换为拼音
- pinyin4j-2.5.0 发布—支持中文到拼音转换
- java的中文转拼音组件---pinyin4j的使用
- 使用pinyin4j完成中文拼音转换
- Java 中文转拼音工具类
- pinyin4j汉字转换拼音的工具类
- java实现中文汉字转拼音 Pinyin4j的基本用法
- java 中文转拼音之pinyin4j
- 分享一段PHP制作的中文拼音首字母工具类
- Pinyin4j获取中文拼音
- 利用Pinyin4j把中文转换为拼音
- 中文转拼音,pinyin4j实用示例
- 中文转义英文拼音功能(pinyin4j)
- 学习笔记之——封装关于字符串中的中文转拼音、获得汉语拼音首字母工具类
- java实现中文汉字转拼音 Pinyin4j的基本用法
- Java中文拼音排序工具类
- pinyin4j把中文句子(含有多音字字母)转成拼音(二维数组递归求所有组合情况返回list)算法实现!
- java中文转换为拼音的pinyin4j学习笔记
- java用pinyin4j把中文问件转化为拼音