packagemjorcen.netty.test1;importjava.io.UnsupportedEncodingException;public classCharByteConverter {/*** 全角转半角
*
*@paramstr
*@return*
*@authormjorcen
* @email mjorcen@gmail.com
* @dateTime Sep 27, 2014 2:51:50 PM
*@version1*/@Deprecatedpublic static finalString toSingleByte(String str) {
StringBuffer outStrBuf= new StringBuffer("");
String Tstr= "";byte[] b = null;for (int i = 0; i < str.length(); i++) {
Tstr= str.substring(i, i + 1);//全角空格转换成半角空格
if (Tstr.equals(" ")) {
outStrBuf.append(" ");continue;
}try{
b= Tstr.getBytes("unicode");//得到 unicode 字节数据
if (b[2] == -1) {//表示全角
b[3] = (byte) (b[3] + 32);
b[2] = 0;
outStrBuf.append(new String(b, "unicode"));
}else{
outStrBuf.append(Tstr);
}
}catch(UnsupportedEncodingException e) {//TODO Auto-generated catch block
e.printStackTrace();
}
}//end for.
returnoutStrBuf.toString();
}/*** 半角转全角
*
*@paramstr
*@return*
*@authormjorcen
* @email mjorcen@gmail.com
* @dateTime Sep 27, 2014 2:52:06 PM
*@version1*/@Deprecatedpublic static finalString toDoubleByte(String str) {
StringBuffer outStrBuf= new StringBuffer("");
String Tstr= "";byte[] b = null;for (int i = 0; i < str.length(); i++) {
Tstr= str.substring(i, i + 1);if (Tstr.equals(" ")) {//半角空格
outStrBuf.append(Tstr);continue;
}try{
b= Tstr.getBytes("unicode");if (b[2] == 0) {//半角
b[3] = (byte) (b[3] - 32);
b[2] = -1;
outStrBuf.append(new String(b, "unicode"));
}else{
outStrBuf.append(Tstr);
}returnoutStrBuf.toString();
}catch(UnsupportedEncodingException e) {//TODO Auto-generated catch block
e.printStackTrace();
}
}returnoutStrBuf.toString();
}/*** 半角转全角
*
*@paramstr
*@return*
*@authormjorcen
* @email mjorcen@gmail.com
* @dateTime Sep 27, 2014 2:52:31 PM
*@version1*/
public staticString ToSBC(String str) {char c[] =str.toCharArray();for (int i = 0; i < c.length; i++) {if (c[i] == ' ') {
c[i]= '\u3000';
}else if (c[i] < '\177') {
c[i]= (char) (c[i] + 65248);
}
}return newString(c);
}/*** 全角转半角
*
*@paramstr
*@return*
*@authormjorcen
* @email mjorcen@gmail.com
* @dateTime Sep 27, 2014 2:52:50 PM
*@version1*/
public staticString ToDBC(String str) {char c[] =str.toCharArray();for (int i = 0; i < c.length; i++) {if (c[i] == '\u3000') {
c[i]= ' ';
}else if (c[i] > '\uFF00' && c[i] < '\uFF5F') {
c[i]= (char) (c[i] - 65248);
}
}
String returnString= newString(c);returnreturnString;
}public static voidmain(String[] args) {long l =System.currentTimeMillis();for (int i = 0; i < 100000; i++) {
String str= "814乡道阿斯蒂芬123/.12,412看2家1快2看了就2;看了2叫看来+看来家12考虑就23;了3接口2了2会2,.水电费苦辣时间的2 125123123121209-021~!@#$%^&*()_";
String result=ToDBC(str);
ToSBC(result);
}
System.out.println(System.currentTimeMillis()-l);
}
}