java全角字符转换为半角 半角转全角

/// 
    /// 判断字符是否英文半角字符或标点
    /// 
    /// 
    /// 32    空格
    /// 33-47    标点
    /// 48-57    0~9
    /// 58-64    标点
    /// 65-90    A~Z
    /// 91-96    标点
    /// 97-122    a~z
    /// 123-126  标点
    /// 
    public static bool IsBjChar(char c)
    {
      int i = (int)c;
      return i >= 32 && i <= 126;
    }

    /// 
    /// 判断字符是否全角字符或标点
    /// 
    /// 
    /// 全角字符 - 65248 = 半角字符
    /// 全角空格例外
    /// 
    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);
    }

    /// 
    /// 将字符串中的全角字符转换为半角
    /// 
    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


你可能感兴趣的:(java,java点滴)