问题描述
今天遇到了一篇文章里面有全角和半角,但是我这边的解析器对于全角的双引号和全角的单引号的解析是乱码,就需要转成半角下的双引号和单引号,然后自己google了好多,前几页的推荐的方法都使用了,但是没有发现一个能实现这个功能的,就自己搞了下,(PS:虽然单句是可以转成功的,但是对于txt文件里面的,还是转成了乱码,原因还在查找),特此记录一下,希望能够帮助其他遇到问题的人。
方法一
/**
* 全角转半角
*
* @param result 需要转换的字符串(内容)
* @return 转换得到结果
*/
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);
}
结果图:
方法二
str = str.replaceAll("“|”", "\""); //替换所有全角双引号
str = str.replaceAll("‘|’", "'"); //替换所有全角单引号
结果图: