码迷,mamicode.com
首页 > 其他好文 > 详细

将文字转换为拼音

时间:2015-02-27 18:28:58      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:

package util;

import java.util.HashSet;
import java.util.Set;
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;
public class PingYingTest {
    public static String getEname(String name) {
        HanyuPinyinOutputFormat pyFormat = new HanyuPinyinOutputFormat();
        pyFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        pyFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        pyFormat.setVCharType(HanyuPinyinVCharType.WITH_V);
        try {
            return PinyinHelper.toHanyuPinyinString(name, pyFormat, "");
        } catch (BadHanyuPinyinOutputFormatCombination e) {
            e.printStackTrace();
        }
        return null;
    }
     public static Set<String> getPinyin(String src){  
      if(src!=null && !src.trim().equalsIgnoreCase("")){  
       char[] srcChar ;  
       srcChar=src.toCharArray();  
       HanyuPinyinOutputFormat hanYuPinOutputFormat = new HanyuPinyinOutputFormat();  
       hanYuPinOutputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);   
       hanYuPinOutputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);  
       hanYuPinOutputFormat.setVCharType(HanyuPinyinVCharType.WITH_V);  

       String[][] temp = new String[src.length()][];  
       for(int i=0;i<srcChar.length;i++){  
        char c = srcChar[i];  
        if(String.valueOf(c).matches("[\\u4E00-\\u9FA5]+")){  
         try{  
          temp[i] = PinyinHelper.toHanyuPinyinStringArray(srcChar[i], hanYuPinOutputFormat);  
         }catch(BadHanyuPinyinOutputFormatCombination e) {  
          e.printStackTrace();  
         }  
        }else if(((int)c>=65 && (int)c<=90) || ((int)c>=97 && (int)c<=122)){  
         temp[i] = new String[]{String.valueOf(srcChar[i])};  
        }else{  
         temp[i] = new String[]{""};  
        }  
       }  
       String[] pingyinArray = Exchange(temp);  
       Set<String> pinyinSet = new HashSet<String>();  
       for(int i=0;i<pingyinArray.length;i++){  
        pinyinSet.add(pingyinArray[i]);  
       }  
       return pinyinSet;  
      }  
      return null;  
     }  
        public static String[] Exchange(String[][] strJaggedArray){  
            String[][] temp = DoExchange(strJaggedArray);  
            return temp[0];         
        }  

        private static String[][] DoExchange(String[][] strJaggedArray){  
            int len = strJaggedArray.length;  
            if(len >= 2){             
                int len1 = strJaggedArray[0].length;  
                int len2 = strJaggedArray[1].length;  
                int newlen = len1*len2;  
                String[] temp = new String[newlen];  
                int Index = 0;  
                for(int i=0;i<len1;i++){  
                    for(int j=0;j<len2;j++){  
                        temp[Index] = strJaggedArray[0][i] + strJaggedArray[1][j];  
                        Index ++;  
                    }  
                }  
                String[][] newArray = new String[len-1][];  
                for(int i=2;i<len;i++){  
                    newArray[i-1] = strJaggedArray[i];                             
                }  
                newArray[0] = temp;  
                return DoExchange(newArray);  
            }else{  
             return strJaggedArray;     
            }  
        }  
    public static void main (String[] args){
        Set<String> s = getPinyin("吃饭了");
        for(String str:s){
            System.out.println(str);
        }
    }
}

将文字转换为拼音

标签:

原文地址:http://blog.csdn.net/u011328015/article/details/43969987

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!