• 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. }  
  • 相关阅读:
    as3关于正则表达式的那些事
    Flex中使用ArrayCollection的注意事项
    flash资源优化技巧
    测试版权信息
    PHP解密Unicode及Escape加密字符串函数
    php foreach
    硅谷黑暗面:房价过高、政治斗争和岗位侵略
    菜鸟网络股权分配:阿里巴巴占51%的股份
    vue 数据导入加载样式
    CSS文字过多设置省略号
  • 原文地址:https://www.cnblogs.com/exmyth/p/4548673.html
Copyright © 2020-2023  润新知