posts - 70,comments - 408,trackbacks - 0
          public?class?change?{
          ????
          ????public?static?void?main(String[]?args)?{
          ????
          ?????String?QJstr="全角轉半角DAO";
          ?????
          ?????String?result=SBCchange(QJstr);
          ????
          ?????System.out.println(QJstr+"\n"+result);
          ??
          ?}
          ?
          ?
          ?public?static?final?String?SBCchange(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;?
          ??}

          ?}







          public class Test {
          public static void main(String[] args) {
          String QJstr = "hello";
          String QJstr1 = "hehe";

          String result = BQchange(QJstr);
          String result1 = QBchange(QJstr1);

          System.out.println(QJstr + "\n" + result);
          System.out.println(QJstr1 + "\n" + result1);
          }

          // 半角轉全角
          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;
          }

          // 全角轉半角
          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;
          }
          }



          /**/// /
          // / 轉全角的函數(SBC case)
          // /

          // /任意字符串
          // /全角字符串
          // /
          // /全角空格為12288,半角空格為32
          // /其他字符半角(33-126)與全角(65281-65374)的對應關系是:均相差65248
          // /

          public static String ToSBC(String input) {
          // 半角轉全角:
          char[] c = input.toCharArray();
          for (int i = 0; i< c.length; i++) {
          if (c[i] == 32) {
          c[i] = (char) 12288;
          continue;
          }
          if (c[i]< 127)
          c[i] = (char) (c[i] + 65248);
          }
          return new String(c);
          }

          /**/// /
          // / 轉半角的函數(DBC case)
          // /

          // /任意字符串
          // /半角字符串
          // /
          // /全角空格為12288,半角空格為32
          // /其他字符半角(33-126)與全角(65281-65374)的對應關系是:均相差65248
          // /

          public static String ToDBC(String input) {
          char[] c = input.toCharArray();
          for (int i = 0; i< c.length; i++) {
          if (c[i] == 12288) {
          c[i] = (char) 32;
          continue;
          }
          if (c[i]> 65280&& c[i]< 65375)
          c[i] = (char) (c[i] - 65248);
          }
          return new String(c);
          }
          posted on 2006-06-01 17:43 我心依舊 閱讀(9115) 評論(1)  編輯  收藏

          FeedBack:
          # re: JAVA全角和半角的轉換.
          2007-12-03 11:49 | 西濱
          最后一種算法才是對的,前面兩種只有原來的字符串是“gbk“編碼的時候才有效。  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 莱阳市| 宁阳县| 游戏| 巴林右旗| 崇左市| 景宁| 宿松县| 梁平县| 香河县| 福州市| 平果县| 三江| 敦煌市| 宁阳县| 湖州市| 双峰县| 孟津县| 公安县| 诸城市| 大宁县| 永嘉县| 苗栗县| 巴青县| 舞阳县| 鄂伦春自治旗| 宁陵县| 天津市| 余庆县| 嘉荫县| 平凉市| 武汉市| 伊吾县| 青田县| 民勤县| 化隆| 尚志市| 长宁区| 应城市| 灵川县| 定结县| 宜君县|