posts - 70,comments - 408,trackbacks - 0
          public?class?change?{
          ????
          ????public?static?void?main(String[]?args)?{
          ????
          ?????String?QJstr="全角轉(zhuǎn)半角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);
          }

          // 半角轉(zhuǎn)全角
          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;
          }

          // 全角轉(zhuǎn)半角
          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;
          }
          }



          /**/// /
          // / 轉(zhuǎn)全角的函數(shù)(SBC case)
          // /

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

          public static String ToSBC(String input) {
          // 半角轉(zhuǎn)全角:
          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);
          }

          /**/// /
          // / 轉(zhuǎn)半角的函數(shù)(DBC case)
          // /

          // /任意字符串
          // /半角字符串
          // /
          // /全角空格為12288,半角空格為32
          // /其他字符半角(33-126)與全角(65281-65374)的對(duì)應(yīng)關(guān)系是:均相差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) 評(píng)論(1)  編輯  收藏

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

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 体育| 东台市| 高平市| 崇信县| 怀来县| 贵定县| 满洲里市| 青神县| 沾益县| 慈利县| 唐海县| 太仓市| 金寨县| 汪清县| 新兴县| 柳江县| 罗平县| 夏邑县| 湖北省| 信丰县| 缙云县| 科技| 黔西县| 永定县| 延边| 甘孜县| 洞头县| 碌曲县| 池州市| 贵阳市| 莲花县| 伊通| 祁门县| 雷山县| 清原| 桦南县| 清流县| 湖北省| 梁平县| 商丘市| 鄂州市|