java全角字符轉換為半角 半角轉全角
/// <summary> /// 判斷字符是否英文半角字符或標點 /// </summary> /// <remarks> /// 32 空格 /// 33-47 標點 /// 48-57 0~9 /// 58-64 標點 /// 65-90 A~Z /// 91-96 標點 /// 97-122 a~z /// 123-126 標點 /// </remarks> public static bool IsBjChar(char c) { int i = (int)c; return i >= 32 && i <= 126; } /// <summary> /// 判斷字符是否全角字符或標點 /// </summary> /// <remarks> /// <para>全角字符 - 65248 = 半角字符</para> /// <para>全角空格例外</para> /// </remarks> public static bool IsQjChar(char c) { if (c == '\u3000') return true; int i = (int)c - 65248; if (i < 32) return false; return IsBjChar((char)i); } /// <summary> /// 將字符串中的全角字符轉換為半角 /// </summary> public static string ToBj(string s) { if (s == null || s.Trim() == string.Empty) return s; StringBuilder sb = new StringBuilder(s.Length); for (int i = 0; i < s.Length; i++) { if (s[i] == '\u3000') sb.Append('\u0020'); else if (IsQjChar(s[i])) sb.Append((char)((int)s[i] - 65248)); else sb.Append(s[i]); } return sb.ToString(); }
全角空格為12288,半角空格為32
其他字符半角(33-126)與考試.大提示全角(65281-65374)的對應關係是:均相差65248
/*************************************** * * 全角轉換成半角 * @param input 原始字符串 * @return 轉換後的字符串 * ***************************************/ public static String QtoB(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); } } return new String(c); }
//半角轉全角 public static String BtoQ(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); }
最後更新:2017-04-02 17:09:28