关于全角半角转换(转)
2014-09-05 11:36
295 查看
见谅未能注明出处:
这里面对第一种说明下,对于一个字符,当转换为unicode编码时候,所对应的byte数组,第三个值对应0或者1,0代表半角,1代表全角
第一种方法: /** * 特殊字符串转换 * @Class Name FullCharConverter * @Author v-jiangwei * @Create In 2012-8-24 */ public class FullCharConverter { /** * 全角转半角的 转换函数 * @Methods Name full2HalfChange * @Create In 2012-8-24 By v-jiangwei * @param QJstr * @return String */ public static final String full2HalfChange(String QJstr) { StringBuffer outStrBuf = new StringBuffer(""); String Tstr = ""; byte[] b = null; for (int i = 0; i < QJstr.length(); i++) { Tstr = QJstr.substring(i, i + 1); // 全角空格转换成半角空格 if (Tstr.equals(" ")) { outStrBuf.append(" "); continue; } try { b = Tstr.getBytes("unicode"); // 得到 unicode 字节数据 if (b[2] == -1) { // 表示全角 b[3] = (byte) (b[3] + 32); b[2] = 0; outStrBuf.append(new String(b, "unicode")); } else { outStrBuf.append(Tstr); } } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } } // end for. return outStrBuf.toString(); } /** * 半角转全角 * @Methods Name half2Fullchange * @Create In 2012-8-24 By v-jiangwei * @param QJstr * @return String */ public static final String half2Fullchange(String QJstr) { StringBuffer outStrBuf = new StringBuffer(""); String Tstr = ""; byte[] b = null; for (int i = 0; i < QJstr.length(); i++) { Tstr = QJstr.substring(i, i + 1); if (Tstr.equals(" ")) { // 半角空格 outStrBuf.append(Tstr); continue; } try { b = Tstr.getBytes("unicode"); if (b[2] == 0) { // 半角 b[3] = (byte) (b[3] - 32); b[2] = -1; outStrBuf.append(new String(b, "unicode")); } else { outStrBuf.append(Tstr); } return outStrBuf.toString(); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return outStrBuf.toString(); } /** * @Methods Name main * @Create In 2012-8-24 By v-jiangwei * @param args * void */ public static void main(String[] args) { // TODO Auto-generated method stub String QJstr = "814乡道"; String result = FullCharConverter.full2HalfChange(QJstr); System.out.println(QJstr); System.out.println(result); System.out.println("------------------------------------"); // 半角转全角 String str = "G45大广高速"; System.out.println(str); System.out.println(FullCharConverter.half2Fullchange(str)); } } 第二种方法: /** * 半角转全角 * @param input String. * @return 全角字符串. */ public static String ToSBC(String input) { char c[] = input.toCharArray(); for (int i = 0; i < c.length; i++) { if (c[i] == ' ') { c[i] = '\u3000'; } else if (c[i] < '\177') { c[i] = (char) (c[i] + 65248); } } return new String(c); } /** * 全角转半角 * @param input String. * @return 半角字符串 */ public static String ToDBC(String input) { char c[] = input.toCharArray(); for (int i = 0; i < c.length; i++) { if (c[i] == '\u3000') { c[i] = ' '; } else if (c[i] > '\uFF00' && c[i] < '\uFF5F') { c[i] = (char) (c[i] - 65248); } } String returnString = new String(c); return returnString; } public static void main(String[] args) { String QJstr = "G45大广高速"; String result = StringUtil.ToDBC(QJstr); System.out.println(result); }
这里面对第一种说明下,对于一个字符,当转换为unicode编码时候,所对应的byte数组,第三个值对应0或者1,0代表半角,1代表全角
相关文章推荐
- Ruby中关于日文转UTF-8及半角全角转换的技巧
- 关于java中半角与全角相互转换
- Ruby 中关于日文转UTF-8及半角全角转换的技巧
- 关于java全角半角转换
- .net中半角转换成全角
- 全角与半角之间的相互转换
- [VBA]字符转换代码:全角转半角,平假名转片假名,首字母大写
- 输入法全角转换为半角(转)
- C#实现全角半角转换
- 用JS和VBS实现全角半角相互转换
- java中实现全角半角转换
- 如何转换全角字符到半角字符?zz对于所有编程来说这个是通用的。。
- 将字符串转换为全角或半角
- 全角转换成半角
- MSSQL 全角/半角转换
- Java中全角/半角字符的转换
- c++ builder:如何转换全角字符到半角字符?
- 全角(SBC case)半角(DBC case)转换类
- 全角字符转换为半角
- 全角/半角转换(收藏)