package com.jframe.kit;

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.exception.BadHanyuPinyinOutputFormatCombination;

/**

 * 汉字转换位汉语拼音,英文字符不变

 * @author xuke

 *

 */

public class Cn2SpellKit {

 

    /**

    * 汉字转换位汉语拼音首字母,英文字符不变

    * @param chines 汉字

    * @return 拼音

    */

    public static String converterToFirstSpell(String chines){     

        String pinyinName = "";

        char[] nameChar = chines.toCharArray();

        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();

        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);

        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 e) {

                    e.printStackTrace();

                }

            }else{

             pinyinName += nameChar[i];

            }

        }

        return pinyinName;

    }

 

    /**

    * 汉字转换位汉语拼音,英文字符不变

    * @param chines 汉字

    * @return 拼音

    */

    public static String converterToSpell(String chines){     

        String pinyinName = "";

        char[] nameChar = chines.toCharArray();

        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();

        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);

        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];

                } catch (BadHanyuPinyinOutputFormatCombination e) {

                    e.printStackTrace();

                }

            }else{

             pinyinName += nameChar[i];

            }

        }

        return pinyinName;

    }

   

    public static String spell(String name){

     String pinyinName = "";

     if(name!=null && !"".equals(name)){

      if(name.length()<=2){

       pinyinName = converterToSpell(name);

      }else{

          pinyinName = converterToSpell(name.substring(0,1))+converterToFirstSpell(name.substring(1,name.length()));

         }

     }

     return pinyinName;

    }

   

    public static void main(String[] args) {

     

     System.out.println(spell("杨成"));

  System.out.println(spell("王帅(小)").toUpperCase());

 }

}

必须pinyin4j-2.5.0.jar

版权声明:本文博客原创文章,博客,未经同意,不得转载。