| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
TerriMabry
10年前发布

pinyin4j使用中文转化拼音

[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, 0, 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!