关于全角半角转换(转)

见谅未能注明出处:

  1     第一种方法:
  2     /**
  3      * 特殊字符串转换
  4      * @Class Name FullCharConverter
  5      * @Author v-jiangwei
  6      * @Create In 2012-8-24
  7      */
  8     public class FullCharConverter {
  9 
 10     /**
 11     * 全角转半角的 转换函数
 12     * @Methods Name full2HalfChange
 13     * @Create In 2012-8-24 By v-jiangwei
 14     * @param QJstr
 15     * @return String
 16     */
 17     public static final String full2HalfChange(String QJstr)
 18     {
 19     StringBuffer outStrBuf = new StringBuffer("");
 20     String Tstr = "";
 21     byte[] b = null;
 22     for (int i = 0; i < QJstr.length(); i++) {
 23     Tstr = QJstr.substring(i, i + 1);
 24     // 全角空格转换成半角空格
 25     if (Tstr.equals(" ")) {
 26     outStrBuf.append(" ");
 27     continue;
 28     }
 29     try {
 30     b = Tstr.getBytes("unicode");
 31     // 得到 unicode 字节数据
 32     if (b[2] == -1) {
 33     // 表示全角
 34     b[3] = (byte) (b[3] + 32);
 35     b[2] = 0;
 36     outStrBuf.append(new String(b, "unicode"));
 37     } else {
 38     outStrBuf.append(Tstr);
 39     }
 40     } catch (UnsupportedEncodingException e) {
 41     // TODO Auto-generated catch block
 42     e.printStackTrace();
 43     }
 44 
 45     } // end for.
 46     return outStrBuf.toString();
 47 
 48 
 49     }
 50 
 51      
 52 
 53     /**
 54     * 半角转全角
 55     * @Methods Name half2Fullchange
 56     * @Create In 2012-8-24 By v-jiangwei
 57     * @param QJstr
 58     * @return String
 59     */
 60     public static final String half2Fullchange(String QJstr)
 61     {
 62     StringBuffer outStrBuf = new StringBuffer("");
 63     String Tstr = "";
 64     byte[] b = null;
 65     for (int i = 0; i < QJstr.length(); i++) {
 66     Tstr = QJstr.substring(i, i + 1);
 67     if (Tstr.equals(" ")) {
 68     // 半角空格
 69     outStrBuf.append(Tstr);
 70     continue;
 71     }
 72     try {
 73     b = Tstr.getBytes("unicode");
 74     if (b[2] == 0) {
 75     // 半角
 76     b[3] = (byte) (b[3] - 32);
 77     b[2] = -1;
 78     outStrBuf.append(new String(b, "unicode"));
 79     } else {
 80     outStrBuf.append(Tstr);
 81     }
 82     return outStrBuf.toString();
 83     } catch (UnsupportedEncodingException e) {
 84     // TODO Auto-generated catch block
 85     e.printStackTrace();
 86     }
 87 
 88     }
 89     return outStrBuf.toString();
 90     }
 91 
 92 
 93     /**
 94     * @Methods Name main
 95     * @Create In 2012-8-24 By v-jiangwei
 96     * @param args
 97     *            void
 98     */
 99     public static void main(String[] args) {
100     // TODO Auto-generated method stub
101     String QJstr = "814乡道";
102     String result = FullCharConverter.full2HalfChange(QJstr);
103     System.out.println(QJstr);
104     System.out.println(result);
105     System.out.println("------------------------------------");
106     // 半角转全角
107     String str = "G45大广高速";
108     System.out.println(str);
109     System.out.println(FullCharConverter.half2Fullchange(str));
110     }
111 
112 
113     }
114     第二种方法:
115     /**
116          * 半角转全角
117          * @param input String.
118          * @return 全角字符串.
119          */
120     public static String ToSBC(String input) {
121              char c[] = input.toCharArray();
122              for (int i = 0; i < c.length; i++) {
123                if (c[i] == ' ') {
124                  c[i] = '\u3000';
125                } else if (c[i] < '\177') {
126                  c[i] = (char) (c[i] + 65248);
127 
128 
129                }
130              }
131              return new String(c);
132     }
133      
134          /**
135          * 全角转半角
136          * @param input String.
137          * @return 半角字符串
138          */
139      public static String ToDBC(String input) {
140          char c[] = input.toCharArray();
141               for (int i = 0; i < c.length; i++) {
142                 if (c[i] == '\u3000') {
143                   c[i] = ' ';
144                 } else if (c[i] > '\uFF00' && c[i] < '\uFF5F') {
145                   c[i] = (char) (c[i] - 65248);
146 
147 
148                 }
149               }
150               String returnString = new String(c);
151               return returnString;
152      }
153         public static void main(String[] args) {
154         String QJstr = "G45大广高速";
155     String result = StringUtil.ToDBC(QJstr);
156     System.out.println(result);
157 
158     }

这里面对第一种说明下,对于一个字符,当转换为unicode编码时候,所对应的byte数组,第三个值对应0或者1,0代表半角,1代表全角

posted @ 2014-09-05 11:36  bingyulei  阅读(322)  评论(0编辑  收藏  举报