幻蝶洋洋 发表于 2013-2-3 10:31:58

全角符和半角符转换

一、在js中处理:
//转换为全角字符
function SBC(text) {
    return text && text.replace(/[\x20-\x7e]/g, function($0) {
        return $0 == " " ? "\u3000" : String.fromCharCode($0.charCodeAt(0) + 0xfee0);
    });
}
//转换为半角字符
function CBS(text) {
    return text && text.replace(/[\u3000\uff01-\uff5f]/g, function($0) {
        return $0 == "\u3000" ? " " : String.fromCharCode($0.charCodeAt(0) - 0xfee0);
    });
}

alert(SBC("zswang 2010"));
alert(CBS("zswang 2010"));
 
二、在java中处理
 /**
  * 半角转全角
  * @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 != -1) {
      b = (byte) (b - 32);
      b = -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 == -1) {
      b = (byte) (b + 32);    
      b = 0;   
      try { 
       outStr = outStr + new String(b, "unicode");
      }catch (java.io.UnsupportedEncodingException e) {
       e.printStackTrace();
      }
     }else{
      outStr = outStr + tStr; 
     }
    }
    return outStr;
   } 
 
public static void main(String[] args){
     System.out.println(QBchange("rewr()34#"));
}
页: [1]
查看完整版本: 全角符和半角符转换