pinyin4j使用中文转化拼音
发布时间:2020-12-15 03:13:31 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 [Java]代码???? package com.app.common.code;import net.sourceforge.pinyin4j.PinyinHelper;import net.sourceforge.pinyin4j.format.HanyuPinyinCa
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 [Java]代码????package com.app.common.code; 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; import org.apache.commons.lang3.StringUtils; /** * 针对中文转化拼音处理 * Created by lance on 2016/1/16. */ public class PinYinUtils { /** * 转为大写字母,如:中国人民银行 =====>ZHONGGUORENMINYINHAN * @author lance * 2016年1月16日 下午4:56:07 */ public static String convertUpper(String text){ return convert(text,HanyuPinyinCaseType.UPPERCASE,false); } /** * 转为小写字母,如:中国人民银行 =====>zhongguorenminyinhang * @author lance * 2016年1月16日 下午4:56:07 */ public static String convertLower(String text){ return convert(text,HanyuPinyinCaseType.LOWERCASE,false); } /** * 首字母大写,如:中国人民银行 =====>ZhongGuoRenMinYinHang * @author lance * 2016年1月16日 下午5:04:11 */ public static String converCapitalize(String text){ return convert(text,null,true); } /** * 所有中文的第一个字母大写,如:中国人民银行 =====>ZGRMYH * @author lance * 2016年1月17日 下午10:16:19 */ public static String capitalizeLetter(String text){ String c = converCapitalize(text); if(StringUtils.isBlank(c)) { return ""; } return StringUtils.replacePattern(c,"[a-z]",""); } /** * 获取首字母,如:中国人民银行 =====>Z * @author lance * 2016年1月17日 下午10:11:57 */ public static String firstLetter(String text){ String c = converCapitalize(text); if(StringUtils.isBlank(c)) { return ""; } return StringUtils.substring(c,1); } /** * 转为拼音 * @param text 待转化的中文字符 * @param caseType 转化类型,即大写小写 * @param isCapitalize 是否首字母大写 * @author lance * 2016年1月17日 下午10:28:05 */ public static String convert(String text,HanyuPinyinCaseType caseType,boolean isCapitalize) { if(StringUtils.isBlank(text)){ return ""; } HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); if(caseType != null) { format.setCaseType(caseType); isCapitalize = false; } format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); format.setVCharType(HanyuPinyinVCharType.WITH_V); char[] input = StringUtils.trimToEmpty(text).toCharArray(); StringBuilder builder = new StringBuilder(); try { for (char c: input) { if (Character.toString(c).matches("[u4E00-u9FA5]+")) { String[] temp = PinyinHelper.toHanyuPinyinStringArray(c,format); if(isCapitalize) { builder.append(StringUtils.capitalize(temp[0])); }else { builder.append(temp[0]); } } else { if(isCapitalize) { builder.append(StringUtils.capitalize(Character.toString(c))); }else { builder.append(Character.toString(c)); } } } } catch (BadHanyuPinyinOutputFormatCombination ex) { ex.printStackTrace(); } return builder.toString(); } } [Java]代码????@Test(enabled = true) public void convert() { String text = "浏览项目的情况,Hello world!"; logger.info("convertUpper: {}",PinYinUtils.convertUpper(text)); logger.info("convertLower: {}",PinYinUtils.convertLower(text)); logger.info("converCapitalize: {}",PinYinUtils.converCapitalize(text)); logger.info("firstLetter: {}",PinYinUtils.firstLetter(text)); logger.info("capitalizeLetter: {}",PinYinUtils.capitalizeLetter(text)); } /**测试结果***/ 22:37:48.044 [main] INFO com.app.common.GenerationData - convertUpper: LIULANXIANGMUDEQINGKUANG,Hello world! 22:37:48.045 [main] INFO com.app.common.GenerationData - convertLower: liulanxiangmudeqingkuang,Hello world! 22:37:48.045 [main] INFO com.app.common.GenerationData - converCapitalize: LiuLanXiangMuDeQingKuang,HELLO WORLD! 22:37:48.046 [main] INFO com.app.common.GenerationData - firstLetter: L 22:37:48.046 [main] INFO com.app.common.GenerationData - capitalizeLetter: LLXMDQK,HELLO WORLD! 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |