問(wèn)題描述
今天遇到了一篇文章里面有全角和半角,但是我這邊的解析器對(duì)于全角的雙引號(hào)和全角的單引號(hào)的解析是亂碼筒狠,就需要轉(zhuǎn)成半角下的雙引號(hào)和單引號(hào),然后自己google了好多,前幾頁(yè)的推薦的方法都使用了谅年,但是沒(méi)有發(fā)現(xiàn)一個(gè)能實(shí)現(xiàn)這個(gè)功能的,就自己搞了下肮韧,(PS:雖然單句是可以轉(zhuǎn)成功的融蹂,但是對(duì)于txt文件里面的,還是轉(zhuǎn)成了亂碼弄企,原因還在查找)超燃,特此記錄一下,希望能夠幫助其他遇到問(wèn)題的人拘领。
方法一
/**
* 全角轉(zhuǎn)半角
*
* @param result 需要轉(zhuǎn)換的字符串(內(nèi)容)
* @return 轉(zhuǎn)換得到結(jié)果
*/
public static String qjToBj(String result) {
char[] chars = result.toCharArray();
for (int i = 0; i < chars.length; i++) {
System.out.println(chars[i] + " " + (int) (chars[i]));
if (chars[i] == 12288) {
chars[i] = ' ';
} else if (chars[i] == 8221) { // ” ---> 8221
chars[i] = (char) (chars[i] - 8187);
} else if (chars[i] == 8220) { // “ ---> 8220 " ---> 34
chars[i] = (char) (chars[i] - 8186);
} else if (chars[i] == 8217) { // ’ ---> 8217 ' ---> 39
chars[i] = (char) (chars[i] - 8178);
} else if (chars[i] == 8216) { // ‘ ---> 8216
chars[i] = (char) (chars[i] - 8177);
} else if (65281 <= chars[i] && chars[i] <= 65374) {
chars[i] = (char) (chars[i] - 65248);
} else {
chars[i] = chars[i];
}
}
return new String(chars);
}
結(jié)果圖:
方法二
str = str.replaceAll("“|”", "\""); //替換所有全角雙引號(hào)
str = str.replaceAll("‘|’", "'"); //替換所有全角單引號(hào)
結(jié)果圖: