Maison  >  Article  >  Java  >  Exemple de tutoriel d'utilisation de pinyin4j

Exemple de tutoriel d'utilisation de pinyin4j

PHP中文网
PHP中文网original
2017-06-20 16:27:021343parcourir
Utilisation du pinyin4j
pinyin4j est une puissante boîte à outils de pinyin chinois. Elle obtient principalement du pinyin dans divers formats et exigences à partir du chinois. Voyons comment l'utiliser. pinyin4j.
 

importer java.util.HashSet;
importer java.util.Set;

importer net.sourceforge.pinyin4j.PinyinHelper;
importer net.sourceforge.pinyin4j.format. HanyuPinyinCaseType ; sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;

public class PingYingChange {

   /**

* Récupère la première lettre de la chaîne de caractères chinois pinyin, les caractères anglais restent inchangés

*
* @param Chinese Chaîne de caractères chinois
* @renvoie la première lettre du pinyin chinois
*/
   public static String cn2FirstSpell(String chinois) {
           StringBuffer pybf = nouveau StringBuffer();
           char[] arr = chinois.toCharArray();
           HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
           defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
           defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); <                                   String[] _t = PinyinHelper.toHanyuPinyinStringArray (arr[i], format par défaut);
                                 if (_t != null) {
                                           pybf.append(_t[0].charAt(0));
                                  }
                                             e.printStackTrace();
                           }
                                           pybf.append(arr[i]);
                   }
           }
           return pybf.toString().replaceAll("\W", "").trim();
   }

/**
* Récupère le pinyin de la chaîne de caractères chinois, les caractères anglais restent inchangés
*
* @param Chinese Chaîne de caractères chinois
* @return Chinese pinyin
*/
   public static String cn2Spell(String chinois) {
           StringBuffer pybf = new StringBuffer();
           char[] arr = chinois.toCharArray();
           HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
           defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
           defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); <                                   pybf.append(PinyinHelper.toHanyuPinyinStringArray( arr[i], defaultFormat)[0]); <
                           }
                                           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]) {
essayer {
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';

cas '1' :

renvoie '1' ;

cas '2' :

renvoie '2';

cas '3' :

retourner '3';

cas '4':

retourner '4';

cas '5':

retourner '5';

cas '6' :

renvoie '6';

cas '7' :

renvoie '7';

cas '8' :

renvoie '8';

cas '9' :

renvoie '9' ;

défaut :

renvoie quan ;

}
}
/**
* Chaîne de conversion de jeu de chaînes (séparées par des virgules)
* @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);
}else{
str.append(s + ",");
}
i++;
}
return str.toString().toLowerCase(); *
* Obtenez le jeu Pinyin
* @author wyh
* @param src
* @return Set*/
public static Set getPinyin(String src){
if(src!=null && !src.trim().equalsIgnoreCase("")){
char[ ] srcChar ;
srcChar=src.toCharArray();
//Classe de sortie au format Hanyu Pinyin
HanyuPinyinOutputFormat hanYuPinOutputFormat = new HanyuPinyinOutputFormat();

//Paramètres de sortie, casse, symboles phonétiques Méthodes, etc. 🎜> Chaîne[] [] temp = new String[src.length()][];
for(int i=0;ichar c = srcChar[i]; /est du chinois Ou convertissez le pinyin de a-z ou A-Z (mon exigence est de garder le chinois ou a-z ou A-Z)
if(String.valueOf(c).matches("[\u4E00-\u9FA5]+")){
essayez {
temp[i] = PinyinHelper.toHanyuPinyinStringArray(srcChar[i], hanYuPinOutputFormat);
}catch(BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace(); }sinon 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 .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){ len1 = strJaggedArray[0].length
int; len2 = strJaggedArray[1].length;
int newlen = len1*len2;
String[] temp = new String[newlen]; ;ifor(int j=0;jtemp[Index] = strJaggedArray[0] [i] + strJaggedArray[1][j]
Index ++;
}
}
String[][] newArray = new String[len-1][]; {
newArray[i-1] = strJaggedArray[i];
}else{
return strJaggedArray;

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

// MAJUSCULE : majuscule (ZHONG)
// MINUSCULE : minuscule ( zhong)
format.setCaseType(HanyuPinyinCaseType.LOWERCASE);

// SANS_TONE : aucun symbole phonétique (zhong)
// WITH_TONE_NUMBER : 1 à 4 chiffres représentent des symboles britanniques (zhong4)
/ / WITH_TONE_MARK : utiliser des symboles phonétiques directement (doit WITH_U_UNICODE sinon exception) (zhòng)
format.setToneType(HanyuPinyinToneType.WITH_TONE_MARK

// WITH_V : utiliser v pour représenter ü (nv)
// WITH_U_AND_COLON : utilisez "u:" pour représenter ü (nu:)
// WITH_U_UNICODE : utilisez ü directement (nü)
format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);
String[] pinyin = PinyinHelper); .toHanyuPinyinStringArray( 'lourd', format);
System.out.println(PinyinHelper.toHanyuPinyinStringArray('lourd', format)[1]);
System.out.println(PingYingChange.cnToSpell("Zhenjiang abc) ")) ;
System.out.println(PingYingChange.quanbianban('o'));
String x = "囧Qui a dit que les mauvais élèves venaient envoyer des vidéos ?";
System.out.println ( cn2FirstSpell(x));
System.out.println(cn2Spell(x));
String str = "Shan Tianfang"
System.out.println(makeStringByStringSet(getPinyin(str))) ;
System.out.println("");
}
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn