小石頭
          Excellence in any department can be attained only by the labor of a lifetime; it is not to be purchased at a lesser price.
          posts - 91,comments - 22,trackbacks - 0

          關于全角轉半角的問題,在Unicode中,標點、數字、字母的半角編碼最高位均為0,它們的全角編碼與半角編碼的第三位相差32h。

          public class Test
          {
          ?public static void main(String [] args)
          ?{
          ? 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);


          ?}

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

          }

          輸出結果為:

          HELLO
          HELLO
          HELLO
          HELLO

          ?


          Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=496423

          ?

          posted on 2007-01-16 23:10 小石頭 閱讀(613) 評論(0)  編輯  收藏 所屬分類: 我的java學習
          主站蜘蛛池模板: 乌恰县| 丽江市| 五常市| 天台县| 正定县| 高州市| 达日县| 岑溪市| 蕉岭县| 黄平县| 共和县| 深水埗区| 颍上县| 黄山市| 南通市| 东乌珠穆沁旗| 安达市| 衡水市| 房山区| 合阳县| 孝昌县| 鞍山市| 贡嘎县| 胶州市| 新巴尔虎右旗| 新竹市| 石狮市| 且末县| 全椒县| 常宁市| 平乡县| 康乐县| 浦东新区| 松潘县| 咸阳市| 柳林县| 东港市| 苏尼特左旗| 雷山县| 柳江县| 永登县|