Java中如何将中文转换为英文String
_夜渐凉
于 2019-06-27 11:00:29 发布 13284
收藏 5 在JAVA 编程中我们经常免不了需要对中文排序,而往往我们排序的依据就是中文的首字母,当然无论依据什么排序,我们都需要将中文转换成为String
首先,我们要调用一个库 pinyin4j-2.5.0.jar
下载地址://sourceforge.net/projects/pinyin4j/
下载解压,里面有个pinyin4j-2.5.0.jar,使用这个库即可。
其次,使用这个库,使用的方法很简单,需要注意以下几点:
// UPPERCASE:大写 (ZHONG)
// LOWERCASE:小写 (zhong)
format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
// WITHOUT_TONE:无音标 (zhong)
// WITH_TONE_NUMBER:1-4数字表示英标 (zhong4)
// WITH_TONE_MARK:直接用音标符(必须WITH_U_UNICODE否则异常) (zhòng)
format.setToneType(HanyuPinyinToneType.WITH_TONE_MARK);
// WITH_V:用v表示ü (nv)
// WITH_U_AND_COLON:用"u:"表示ü (nu:)
// WITH_U_UNICODE:直接用ü (nü)
format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE); 更加直接的说,将中文转换成为String 主要是使用下面的这个接口:
PinyinHelper.toHanyuPinyinStringArray(input[i], format);
这个接口有个容错判断 如果input 如果传入的不是汉字,就不能转换成拼音,
那么直接返回null,所以需要用正则表达式判断是否是中文 Character.toString(input[i]).matches("[\\u4E00-\\u9FA5]+")
更加具体的内容请看下面的完整代码
public static String getPinYin(String inputString) {
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
format.setVCharType(HanyuPinyinVCharType.WITH_V);
char[] input = inputString.trim().toCharArray();
String output = "";
try {
for (int i = 0; i < input.length; i++) {
if (Character.toString(input[i]).matches("[\\u4E00-\\u9FA5]+")) { //判断字符是否是中文
//toHanyuPinyinStringArray 如果传入的不是汉字,就不能转换成拼音,那么直接返回null
//由于中文有很多是多音字,所以这些字会有多个String,在这里我们默认的选择第一个作为pinyin
String[] temp = PinyinHelper.toHanyuPinyinStringArray(input[i], format);
output += temp[0];
} else {
output += Character.toString(input[i]);
}
}
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
// Log.v(TAG, "BadHanyuPinyinOutputFormatCombination");
}
return output;
}
/**
* 取出拼音中第一个字母,一般第一个字母的使用时比较常见的
* @param chines
* @return
*/
public static String converterToFirstSpell(String chines) {
String pinyinName = "";
char[] nameChar = chines.toCharArray();
HanyuPinyinOutputFormat defaulFormat = new HanyuPinyinOutputFormat();
defaulFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
defaulFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
defaulFormat.setVCharType(HanyuPinyinVCharType.WITH_V);
for (int i = 0; i < nameChar.length; i++) {
if (nameChar[i] > 128) {
try {
pinyinName += PinyinHelper.toHanyuPinyinStringArray(nameChar[i], defaulFormat)[0].charAt(0);
} catch (BadHanyuPinyinOutputFormatCombination ex) {
ex.printStackTrace();
}
} else {
pinyinName += nameChar[i];
}
}
return pinyinName;
}
来源于:
//blog.csdn.net/whale_kyle/article/details/51577588
java 将中文字符转为英文,java 将中文字符号转为英文
package test;
import java.io.UnsupportedEncodingException;
public class TestString {
public static void main(String args
[]) throws UnsupportedEncodingException{
String s
= " 强力清除广告,上网更快的浏览器!";
System.out
.println(s
);
System.out
.println(convertMoString(s
));
}
public static synchronized String convertMoString(String sMo
) {
String sReturn
= sMo
;
if (sReturn
== null) {
return sReturn
;
}
try {
sReturn
= sReturn
.toUpperCase();
sReturn
= sReturn
.replace(',', ',');
sReturn
= sReturn
.replace('。', '.');
sReturn
= sReturn
.replace(';', ';');
sReturn
= sReturn
.replace('!', '
!e69da5e887aae799bee5baa6e997aee7ad9431333335313732'
);
sReturn
= sReturn
.replace('?', '?');
sReturn
= sReturn
.replace(':', ':');
sReturn
= sReturn
.replace('"', '"');
sReturn
= sReturn
.replace('“', '"');
sReturn
= sReturn
.replace('”', '"');
// sReturn = sReturn.replace('-', ' ');
// sReturn = sReturn.replace('_', ' ');
sReturn
= sReturn
.replace(',', ',');
sReturn
= sReturn
.replace('0', '0');
sReturn
= sReturn
.replace('1', '1');
sReturn
= sReturn
.replace('2', '2');
sReturn
= sReturn
.replace('3', '3');
sReturn
= sReturn
.replace('4', '4');
sReturn
= sReturn
.replace('5', '5');
sReturn
= sReturn
.replace('6', '6');
sReturn
= sReturn
.replace('7', '7');
sReturn
= sReturn
.replace('8', '8');
sReturn
= sReturn
.replace('9', '9');
sReturn
= sReturn
.replace('A', 'A');
sReturn
= sReturn
.replace('B', 'B');
sReturn
= sReturn
.replace('C', 'C');
sReturn
= sReturn
.replace('D', 'D');
sReturn
= sReturn
.replace('E', 'E');
sReturn
= sReturn
.replace('F', 'F');
sReturn
= sReturn
.replace('G', 'G');
sReturn
= sReturn
.replace('H', 'H');
sReturn
= sReturn
.replace('I', 'I');
sReturn
= sReturn
.replace('J', 'J');
sReturn
= sReturn
.replace('K', 'K');
sReturn
= sReturn
.replace('L', 'L');
sReturn
= sReturn
.replace('M', 'M');
sReturn
= sReturn
.replace('N', 'N');
sReturn
= sReturn
.replace('O', 'O');
sReturn
= sReturn
.replace('P', 'P');
sReturn
= sReturn
.replace('Q', 'Q');
sReturn
= sReturn
.replace('R', 'R');
sReturn
= sReturn
.replace('S', 'S');
sReturn
= sReturn
.replace('T', 'T');
sReturn
= sReturn
.replace('U', 'U');
sReturn
= sReturn
.replace('V', 'V');
sReturn
= sReturn
.replace('W', 'W');
sReturn
= sReturn
.replace('X', 'X');
sReturn
= sReturn
.replace('Y', 'Y');
sReturn
= sReturn
.replace('Z', 'Z');
sReturn
= strReplace(sReturn
, "‘", "'");
} catch (Exception ex
) {
return sMo
;
}
return sReturn
;
}
public static synchronized String strReplace(String sAll
, String sOld
,String sNew
) {
int iT
= 0;
String sF
= null;
String sH
= null;
/* 如果新串中包括旧串,不让替多只让替少 */
if (sNew
.indexOf(sOld
) != -1) {
return sAll
;
}
if ((sAll
== null) || (sOld
== null) || (sNew
== null)) {
return sAll
;
}
iT
= sAll
.indexOf(sOld
);
while (iT
!= -1) {
sF
= sAll
.substring(0, iT
);
sH
= sAll
.substring(iT
+ sOld
.length());
sAll
= sF
+ sNew
+ sH
;
iT
= sAll
.indexOf(sOld
);
}
return sAll
;
}
}
/*
运行结果:
强力清除广告,上网更快的浏览器!
强力清除广告,上网更快的浏览器!
*/