1.JAVA 汉字首字母排序
2.java中进行拼音排序的时候,如何进行多音字处理!最好能举个例子!
3.谁做过java 同音字查询,请赐教一下,cef获取网页源码有源码更好。go grpc源码
JAVA 汉字首字母排序
我知道用java可以通过汉字的获得到首字母。下面是源码:
import net.sourceforge.pinyin4j.PinyinHelper;
public class PinyinAPI {
/
*** 提取每个汉字的首字母(大写)
*
* @param str
* @return
*/
public static String getPinYinHeadChar(String str) {
if (isNull(str)) {
return "";
}
String convert = "";
for (int j = 0; j < str.length(); j++) {
char word = str.charAt(j);
// 提取汉字的首字母
String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word);
if (pinyinArray != null) {
convert += pinyinArray[0].charAt(0);
}
else {
convert += word;
}
}
convert = string2AllTrim(convert);
return convert.toUpperCase();
}
/
** 判断字符串是否为空
*/
public static boolean isNull(Object strData) {
if (strData == null || String.valueOf(strData).trim().equals("")) {
return true;
}
return false;
}
/
*** 去掉字符串包含的所有空格
*
* @param value
* @return
*/
public static String string2AllTrim(String value) {
if (isNull(value)) {
return "";
}
return value.trim().replace(" ", "");
}
public static void main(String[] args) {
String ss = PinyinAPI.getPinYinHeadChar("中国");
System.out.print(ss);//ZG
}
}
java中进行拼音排序的时候,如何进行多音字处理!最好能举个例子!
如果这种情况不和很多的话,可以使用replaceall("重庆","cq")进行替换。如果太多了话就。ssm全部源码能想到的办法就是做一个词组表,用来进行替换。如果有好的建议,欢迎讨论。linux源码地址
获取汉字拼音的常规办法就是pinyin4j。这个百度下,没什么问题。
使用pinyin4j的jemalloc源码解读思路,做出一张多音字词组表。根据词组表替换成正确的字母首拼,之后再进行pinyin4j进行转换
谁做过java 同音字查询,请赐教一下,有源码更好。
下面是中文转换成拼音的一个程序。需要下载jar包!下载不到的可以来找我!
可以生成 中国 zhongguo 或zg
package cn;
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.exception.BadHanyuPinyinOutputFormatCombination;
/**
* 汉字转换位汉语拼音,英文字符不变
*
* @author xuke
*
*/
public class Pinyin4J {
/**
* 汉字转换位汉语拼音首字母,英文字符不变
*
* @param chines
* 汉字
* @return 拼音
*/
public static String converterToFirstSpell(String chines) {
String pinyinName = "";
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++) {
if (nameChar[i] > ) {
try {
pinyinName += PinyinHelper.toHanyuPinyinStringArray(
nameChar[i], defaultFormat)[0].charAt(0);
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
} else {
pinyinName += nameChar[i];
}
}
return pinyinName;
}
/**
* 汉字转换位汉语拼音,英文字符不变
*
* @param chines
* 汉字
* @return 拼音
*/
public static String converterToSpell(String chines) {
String pinyinName = "";
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++) {
if (nameChar[i] > ) {
try {
pinyinName += PinyinHelper.toHanyuPinyinStringArray(
nameChar[i], defaultFormat)[0];
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
} else {
pinyinName += nameChar[i];
}
}
return pinyinName;
}
public static void main(String[] args) {
System.out.println(converterToSpell("百度"));
}
}