[java] view plaincopy
- /// <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
[java] view plaincopy
- /***************************************
- *
- * 全角转换成半角
- * @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);
- }
[java] view plaincopy
- //半角转全角
- 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);
- }
时间: 2024-08-11 01:36:20