加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读