Java Chinese characters to Pinyin (flashback display, filter characters, letters, numbers are added to the end)

Chinese characters to pinyin (flashback display, filter characters, letters, numbers are added to the end)

Third-party shelf package download address: https://sourceforge.net/projects/pinyin4j/files/


package a;
import java.util.LinkedList;
import java.util.regex.Pattern;

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 HanyuPinyinHelper {

    /**
     * Convert text to Pinyin
     * @param chineselanguage Chinese to be converted into pinyin
     */
    public String toHanyuPinyin (String ChineseLanguage) {
        char[] cl_chars = ChineseLanguage.trim().toCharArray();
        StringBuffer hanyupinyin = new StringBuffer(); // 拼音
        StringBuffer number = new StringBuffer(); // 数字
        LinkedList<String> linkedList = new LinkedList<>();
        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);// Output Pinyin all lowercase
        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// without tone
        defaultFormat.setVCharType(HanyuPinyinVCharType.WITH_V) ;
        try {
            for (int i=0; i<cl_chars.length; i++){
                if (String.valueOf(cl_chars[i]).matches("[\u4e00-\u9fa5]+")){// If the character is Chinese, convert Chinese to Pinyin
                  // hanyupinyin += PinyinHelper.toHanyuPinyinStringArray (cl_chars [i], defaultFormat) [0];
                	linkedList.add (PinyinHelper.toHanyuPinyinStringArray (cl_chars [i], defaultFormat) [0]);
                } else {// If the characters are not Chinese, do not convert
                    //hanyupinyin += cl_chars[i];
//                	linkedList.add();
                	if (Pattern.matches("\\d+", String.valueOf(cl_chars[i]))) {
                		number.append(String.valueOf(cl_chars[i]));
                	}
                }
            }
        } catch (BadHanyuPinyinOutputFormatCombination e) {
            System.out.println("Character cannot be converted into Chinese Pinyin");
        }
        for (int i = linkedList.size() -1 ; i >= 0; i--) {
        	hanyupinyin.append(linkedList.get(i)+".");
		}
        String fullStr = hanyupinyin.toString().substring(0 , hanyupinyin.length() -1);
        return fullStr + number;
    }
    
    public static void main(String[] args) {
        HanyuPinyinHelper hanyuPinyinHelper = new HanyuPinyinHelper() ;
        System.out.print(hanyuPinyinHelper.toHanyuPinyin("Xin Miao Yan Ben Piao Park"));
    }
}


Reference link: https://www.cnblogs.com/zh-1721342390/p/8276922.html

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324735194&siteId=291194637