Heim  >  Artikel  >  Java  >  Beispiel-Tutorial zur Verwendung von pinyin4j

Beispiel-Tutorial zur Verwendung von pinyin4j

PHP中文网
PHP中文网Original
2017-06-20 16:27:021336Durchsuche
Verwendung von Pinyin4j
Pinyin4j ist ein leistungsstarkes chinesisches Pinyin-Toolkit, das hauptsächlich Pinyin in verschiedenen Formaten erhält und über leistungsstarke Funktionen verfügt. pinyin4j.
 

java.util.HashSet importieren;
java.util.Set importieren;

net.sourceforge.pinyin4j.PinyinHelper importieren;
net.sourceforge.pinyin4j.format importieren. 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 PingYingChange {

   /**
* Holen Sie sich den ersten Buchstaben der chinesischen Pinyin-Zeichenfolge, die englischen Zeichen bleiben unverändert
*
* @param chinese Chinesische Zeichenkette
* @return den ersten Buchstaben der chinesischen Pinyin
*/
   public static String cn2FirstSpell(String chinese) {
           StringBuffer pybf = new StringBuffer();
           char[] arr = chinese.toCharArray();
           HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
           defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
           defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
           for (int i = 0; i < arr.length; i++) {
                   if (arr[i] > 128) {
                           try {
                                   String[] _t = PinyinHelper.toHanyuPinyinStringArray (arr[i], defaultFormat);
                                   if (_t != null) {
                                         pybf.append(_t[0].charAt(0));
                                   }
                                                    e.printStackTrace();
                           }
                   } else {
                           pybf.append(arr[i]);
                   }
           }
           return pybf.toString().replaceAll("\W", "").trim();
   }

/**
* Pinyin der chinesischen Zeichenkette abrufen, die englischen Zeichen bleiben unverändert
*
* @param chinesische chinesische Zeichenkette
* @return chinesisches Pinyin
*/
   public static String cn2Spell(String chinese) {
           StringBuffer pybf = new StringBuffer();
           char[] arr = chinese.toCharArray();
           HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
           defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
           defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
           for (int i = 0; i < arr.length; i++) {
                   if (arr[i] > 128) {
                           try {
                                   pybf.append(PinyinHelper.toHanyuPinyinStringArray( arr[i], defaultFormat)[0]);
                           } Catch (BadHanyuPinyinOutputFormatCombination e) {
                                   e.printStackTrace();
                           }
                   } else {
                           pybf.append(arr[i]);
                   }
           }
           return pybf.toString();
   }
public static String cnToSpell(String chines) {

String pinyinName = "";
StringBuffer strbuf = new StringBuffer();
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++) {
char name = quanbianban(nameChar[i]);
nameChar[i] = name;
if (128 < nameChar[i]) {
try {
strbuf.append(PinyinHelper.toHanyuPinyinStringArray(nameChar[i], defaultFormat)[0].charAt(0));
} Catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
} else {
strbuf.append(nameChar[i]);
}
}

pinyinName = strbuf.toString();

return pinyinName;
}

public static char quanbianban(char quan) {
switch (quan) {

case '0':
return '0';

case '1':
return '1';

case '2':
return '2';

case '3':
return '3';

case '4':
return '4';

case '5':
return '5';

case '6':
return '6';

case '7':
return '7';

case '8':
return '8';

case '9':
return '9';

default:
return quan;

}
}
/**
* Zeichenfolgensatz-Konvertierungszeichenfolge (durch Kommas getrennt)
* @author wyh
* @param stringSet
* @return
*/
public static String makeStringByStringSet(Set stringSet){
StringBuilder str = new StringBuilder();
int i =0;
for(String s : stringSet){
if(i == stringSet.size() - 1){
str.append(s);
str.append(s + ",");
}
}
return str.toString().toLowerCase();

/* *
* Pinyin-Set abrufen
* @author wyh
* @param src
* @return Set*/
public static Set getPinyin(String src){
if(src!=null && !src.trim().equalsIgnoreCase("")){
char[ ] srcChar ;
srcChar=src.toCharArray();
//Hanyu Pinyin-Format-Ausgabeklasse
HanyuPinyinOutputFormat = new HanyuPinyinOutputFormat();

//Ausgabeeinstellungen, Groß-/Kleinschreibung, phonetische Symbole Methoden usw.
hanYuPinOutputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
hanYuPinOutputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
hanYuPinOutputFormat.setVCharType(HanyuPinyinVCharType.WITH _V); 🎜>String[] [] temp = new String[src.length()][]; for(int i=0;ichar c = srcChar[i]; /ist Chinesisch Oder konvertiere Pinyin von a-z oder A-Z (meine Anforderung ist, Chinesisch oder a-z oder A-Z beizubehalten)
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(); for(int i=0;ipinyinSet .add( pingyinArray[i]);
return pinyinSet;
}
return null; public static String [] Exchange(String[][] strJaggedArray){
String[][] temp = DoExchange(strJaggedArray); ][] DoExchange(String[][] strJaggedArray){
int len ​​​​= strJaggedArray.length;
if(len >= 2){ len1 = strJaggedArray[0].length; len2 = strJaggedArray[1].length;
int newlen = len1*len2;
String[] temp = new String[newlen];
for(int i=0 ;ifor(int j=0;jtemp[Index] = strJaggedArray[0] [i] + strJaggedArray[1][j]; 🎜>Index ++;
}
}
String[][] newArray = new String[len-1][]; {
newArray[i-1] = strJaggedArray[i] );

public static void main(String[] args) throws Exception {
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();

// GROSSBUCHSTABEN: Großbuchstaben (ZHONG)
// KLEINBUCHSTABEN: Kleinbuchstaben ( zhong)
format.setCaseType(HanyuPinyinCaseType.LOWERCASE);

// WITHOUT_TONE: Keine phonetischen Symbole (zhong)
// WITH_TONE_NUMBER: 1-4 Zahlen stellen britische Symbole dar (zhong4)
// WITH_TONE_MARK: Phonetische Symbole direkt verwenden (muss WITH_U_UNICODE andernfalls Ausnahme) (zhòng)
format.setToneType(HanyuPinyinToneType.WITH_TONE_MARK);

// WITH_V: Verwenden Sie v, um ü (nv) darzustellen
// WITH_U_AND_COLON: Verwenden Sie „u:“, um ü (nu:) darzustellen
// WITH_U_UNICODE: Verwenden Sie ü direkt (nü)
format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);
String[] pinyin = PinyinHelper .toHanyuPinyinStringArray( 'heavy', format);
System.out.println(PinyinHelper.toHanyuPinyinStringArray('heavy', format)[1]);
System.out.println(PingYingChange.cnToSpell("Zhenjiang abc ")) ;
System.out.println(PingYingChange.quanbianban('o'));
String x = "囧Wer hat gesagt, dass schlechte Schüler kommen, um Videos zu senden?";
System.out.println ( cn2FirstSpell(x));
System.out.println(cn2Spell(x));
String str = "Shan Tianfang"
System.out.println(getPinyin(str))) ;
System.out.println("");
}
}

Das obige ist der detaillierte Inhalt vonBeispiel-Tutorial zur Verwendung von pinyin4j. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn