浏览 10776 次
锁定老帖子 主题:java全角半角项目转换及去除全/半角空格
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-11-03
package com.eg.demo; /** * 半角全角转换及替换半角全角空白 * @author maochangming */ public class Test { public static void main(String[] args) throws Exception { try { //去首尾空格,不管是全角半角: String s = "nihaohk nihehe "; System.out.println("s.length=" + s.length()); // s = s.replaceAll("^\\s*|\\s*$", ""); s = s.replaceAll("(^[ | ]*|[ | ]*$)", ""); s = s.replaceAll(" ", ""); System.out.println("s.length=" + s.length()); System.out.println("s===" + s); String QJstr = "HELLO"; String QJstr1 = "HELLO"; String result = BQchange(QJstr); String result1 = QBchange(QJstr1); System.out.println(QJstr + "\n" + result); System.out.println(QJstr1 + "\n" + result1); } catch (Exception ex) { throw new Exception("ERROR:" + ex.getMessage()); } } /** * 半角转全角 * @param QJstr * @return */ public static final String BQchange(String QJstr) { String outStr = ""; String Tstr = ""; byte[] b = null; for (int i = 0; i < QJstr.length(); i++) { try { Tstr = QJstr.substring(i, i + 1); b = Tstr.getBytes("unicode"); } catch (java.io.UnsupportedEncodingException e) { e.printStackTrace(); } if (b[3] != -1) { b[2] = (byte) (b[2] - 32); b[3] = -1; try { outStr = outStr + new String(b, "unicode"); } catch (java.io.UnsupportedEncodingException e) { e.printStackTrace(); } } else outStr = outStr + Tstr; } return outStr; } /** * 全角转半角 * @param QJstr * @return */ public static final String QBchange(String QJstr) { String outStr = ""; String Tstr = ""; byte[] b = null; for (int i = 0; i < QJstr.length(); i++) { try { Tstr = QJstr.substring(i, i + 1); b = Tstr.getBytes("unicode"); } catch (java.io.UnsupportedEncodingException e) { e.printStackTrace(); } if (b[3] == -1) { b[2] = (byte) (b[2] + 32); b[3] = 0; try { outStr = outStr + new String(b, "unicode"); } catch (java.io.UnsupportedEncodingException e) { e.printStackTrace(); } } else outStr = outStr + Tstr; } return outStr; } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-11-03
你的那里的if (b[3] != -1) {
b[2] = (byte) (b[2] - 32); b[3] = -1; 为什么总是b[3]和b[2]来做比较?这里我没有怎么看明白?能不能给解释一下!谢谢了! |
|
返回顶楼 | |
发表时间:2007-11-03
首先请楼上先看如下代码:
//测试单字符不同的字符集返回的字节数 byte[] bb = null; String str = "h"; bb = str.getBytes("gb2312"); System.out.println("bb.length=" + bb.length); bb = str.getBytes("unicode"); System.out.println("bb.length=" + bb.length); //输出结果如下: //bb.length=1 //bb.length=4 //测试字符串不同字符集返回的字节数 byte[] bb1 = null; String str1 = "hello"; bb1 = str1.getBytes("gb2312"); System.out.println("bb1.length=" + bb1.length); bb1 = str1.getBytes("unicode"); System.out.println("bb1.length=" + bb1.length); //输出结果如下: //bb1.length=5 //bb1.length=12 测试结果截然不同: |
|
返回顶楼 | |