자바 전각 문 자 를 반 각 반 각 전각 으로 변환

/// <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);
}

좋은 웹페이지 즐겨찾기