中文 转 英文 java

Java中如何将中文转换为英文String

中文 转 英文 java

_夜渐凉

中文 转 英文 java
于 2019-06-27 11:00:29 发布
中文 转 英文 java
13284
中文 转 英文 java
收藏 5

在JAVA 编程中我们经常免不了需要对中文排序,而往往我们排序的依据就是中文的首字母,当然无论依据什么排序,我们都需要将中文转换成为String
首先,我们要调用一个库 pinyin4j-2.5.0.jar

下载地址:http://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;
    }

来源于:

https://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;
	}
}
/*
运行结果:
强力清除广告,上网更快的浏览器!
强力清除广告,上网更快的浏览器!
*/