pinyin4j使用中文转化拼音
发布时间:2020-05-24 22:43:12 所属栏目:Java 来源:互联网
导读:pinyin4j使用中文转化拼音
|
下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。 脚本之家小编现在分享给大家,也给大家做个参考。 [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!
以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。 如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
