您的位置:首页 > 编程语言 > Java开发

Java获取汉字拼音和拼音缩写

2016-12-12 17:06 423 查看

Java获取汉字拼音和拼音缩写

有时候,为了获取更好的搜索效果,我们需要通过拼音搜索来实现汉字的匹配。现提供汉字转拼音和拼音缩写的方法如下:

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 PinYin {
public static void main(String[] args) {
// 汉字转拼音,拼音首字母,自学习首字母查询
String searchWord = "你好";

String pingYinSuoXie = PinYin.getPingYinSuoXie(searchWord);
String pingYinSuoXie2 = PinYin.getPingYinSuoXie2(searchWord);
String pingYin = PinYin.getPingYin(searchWord);

System.out.println(pingYinSuoXie);
System.out.println(pingYinSuoXie2);
System.out.println(pingYin);
}

/**
* 将字符串中的中文转化为拼音首字母
*/
public static String getPingYinSuoXie(String inputString) {
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);

String output = "";
if (inputString != null && inputString.length() > 0 && !"null".equals(inputString)) {
char[] input = inputString.trim().toCharArray();
try {
for (int i = 0; i < input.length; i++) {
if (java.lang.Character.toString(input[i]).matches("[\\u4E00-\\u9FA5]+")) {

String[] temp = PinyinHelper.toHanyuPinyinStringArray(input[i], format);
output += temp[0].charAt(0);
} else {
output += java.lang.Character.toString(input[i]);
}
}
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
} else {
return "*";
}
return output;
}

/**
* 将字符串中的中文转化为拼音首字母
*/
public static String getPingYinSuoXie2(String inputString) {
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);

int a = 0;
String output = "";
if (inputString != null && inputString.length() > 0 && !"null".equals(inputString)) {
char[] input = inputString.trim().toCharArray();
try {
for (int i = 0; i < input.length; i++) {
if (java.lang.Character.toString(input[i]).matches("[\\u4E00-\\u9FA5]+")) {

String[] temp = PinyinHelper.toHanyuPinyinStringArray(input[i], format);
if (a == 0) {
output += temp[0];
} else {
output += temp[0].charAt(0);
}
a++;
} else {
output += java.lang.Character.toString(input[i]);
}
}
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
} else {
return "*";
}
return output;
}

/**
* 将字符串中的中文转化为拼音
*/
public static String getPingYin(String inputString) {
HanyuPinyinOutp
9450
utFormat format = new HanyuPinyinOutputFormat();
format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
format.setVCharType(HanyuPinyinVCharType.WITH_V);

String output = "";
if (inputString != null && inputString.length() > 0 && !"null".equals(inputString)) {
char[] input = inputString.trim().toCharArray();
try {
for (int i = 0; i < input.length; i++) {
if (java.lang.Character.toString(input[i]).matches("[\\u4E00-\\u9FA5]+")) {
String[] temp = PinyinHelper.toHanyuPinyinStringArray(input[i], format);
output += temp[0];
} else {
output += java.lang.Character.toString(input[i]);
}
}
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
} else {
return "*";
}
return output;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: