java 全角字符半角字符转换

[java] view plaincopy
 
  1. /// <summary>  
  2.     /// 判断字符是否英文半角字符或标点  
  3.     /// </summary>  
  4.     /// <remarks>  
  5.     /// 32    空格  
  6.     /// 33-47    标点  
  7.     /// 48-57    0~9  
  8.     /// 58-64    标点  
  9.     /// 65-90    A~Z  
  10.     /// 91-96    标点  
  11.     /// 97-122    a~z  
  12.     /// 123-126  标点  
  13.     /// </remarks>  
  14.     public static bool IsBjChar(char c)  
  15.     {  
  16.       int i = (int)c;  
  17.       return i >= 32 && i <= 126;  
  18.     }  
  19.   
  20.     /// <summary>  
  21.     /// 判断字符是否全角字符或标点  
  22.     /// </summary>  
  23.     /// <remarks>  
  24.     /// <para>全角字符 - 65248 = 半角字符</para>  
  25.     /// <para>全角空格例外</para>  
  26.     /// </remarks>  
  27.     public static bool IsQjChar(char c)  
  28.     {  
  29.       if (c == 'u3000') return true;  
  30.   
  31.       int i = (int)c - 65248;  
  32.       if (i < 32) return false;  
  33.       return IsBjChar((char)i);  
  34.     }  
  35.   
  36.     /// <summary>  
  37.     /// 将字符串中的全角字符转换为半角  
  38.     /// </summary>  
  39.     public static string ToBj(string s)  
  40.     {  
  41.       if (s == null || s.Trim() == string.Empty) return s;  
  42.   
  43.       StringBuilder sb = new StringBuilder(s.Length);  
  44.       for (int i = 0; i < s.Length; i++)  
  45.       {  
  46.         if (s[i] == 'u3000')  
  47.           sb.Append('u0020');  
  48.         else if (IsQjChar(s[i]))  
  49.           sb.Append((char)((int)s[i] - 65248));  
  50.         else  
  51.           sb.Append(s[i]);  
  52.       }  
  53.   
  54.       return sb.ToString();  
  55.     }  

全角空格为12288,半角空格为32

其他字符半角(33-126)与考试.大提示全角(65281-65374)的对应关系是:均相差65248


[java] view plaincopy
 
  1. /*************************************** 
  2. * 全角转换成半角 
  3. * @param input 原始字符串 
  4. * @return 转换后的字符串 
  5. ***************************************/  
  6. public static String QtoB(String input) {  
  7. char c[] = input.toCharArray();  
  8. for (int i = 0; i < c.length; i++) {  
  9. if (c[i] == 'u3000') {  
  10. c[i] = ' ';  
  11. }?  
  12. else if (c[i] > 'uFF00' && c[i] < 'uFF5F') {  
  13. c[i] = (char) (c[i] - 65248);  
  14. }  
  15. }  
  16. return new String(c);  
  17. }  
[java] view plaincopy
 
  1. //半角转全角  
  2. public static String BtoQ(String input){  
  3. char c[] = input.toCharArray();  
  4. for ( int i=0; i<c.length;i++ ) {  
  5. if (c[i] ==' ') {  
  6. c[i] = 'u3000';  
  7. }   
  8. else if (c[i]<'177') {  
  9. c[i]= (char) (c[i]+65248);  
  10. }  
  11. }  
  12. return new String(c);  
  13. }  
原文地址:https://www.cnblogs.com/exmyth/p/4548673.html