黑马程序员技术交流社区

标题: Java将中文姓名转换为拼音 [打印本页]

作者: 李江    时间: 2013-10-11 19:42
标题: Java将中文姓名转换为拼音
  1. import net.sourceforge.pinyin4j.PinyinHelper;
  2. import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
  3. import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
  4. import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
  5. import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;

  6. public class SpellHelper {
  7.     //将中文转换为英文
  8.     public static String getEname(String name) {
  9.         HanyuPinyinOutputFormat pyFormat = new HanyuPinyinOutputFormat();
  10.         pyFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
  11.         pyFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
  12.         pyFormat.setVCharType(HanyuPinyinVCharType.WITH_V);

  13.         return PinyinHelper.toHanyuPinyinString(name, pyFormat, "");
  14.     }

  15.     //姓、名的第一个字母需要为大写
  16.     public static String getUpEname(String name) {
  17.         char[] strs = name.toCharArray();
  18.         String newname = null;
  19.                
  20.         //名字的长度
  21.         if (strs.length == 2) {   
  22.                 newname = toUpCase(getEname("" + strs[0])) + " "
  23.                     + toUpCase(getEname("" + strs[1]));
  24.         } else if (strs.length == 3) {
  25.                newname = toUpCase(getEname("" + strs[0])) + " "
  26.                     + toUpCase(getEname("" + strs[1] + strs[2]));
  27.         } else if (strs.length == 4) {
  28.             newname = toUpCase(getEname("" + strs[0] + strs[1])) + " "
  29.                     + toUpCase(getEname("" + strs[2] + strs[3]));
  30.         } else {
  31.             newname = toUpCase(getEname(name));
  32.         }

  33.         return newname;
  34.     }

  35.     //首字母大写
  36.     private static String toUpCase(String str) {
  37.         StringBuffer newstr = new StringBuffer();
  38.         newstr.append((str.substring(0, 1)).toUpperCase()).append(
  39.                 str.substring(1, str.length()));

  40.         return newstr.toString();
  41.     }

  42.     public static void main(String[] args) {
  43.         System.out.println(getUpEname("李宇春"));

  44.     }

  45. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2