Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1262926
  • 博文数量: 135
  • 博客积分: 10588
  • 博客等级: 上将
  • 技术积分: 1325
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-18 11:12
文章分类

全部博文(135)

文章存档

2013年(6)

2012年(3)

2011年(11)

2010年(7)

2009年(14)

2008年(6)

2007年(42)

2006年(46)

分类:

2009-02-12 16:37:02

都是vs2005的全角半角转换闹的。。。
//
判断字符是否英文半角字符或标点
    
//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;
        }

        
else
        
{
            
return IsBjChar((char)i);
        }

    }


    
/// 将字符串中的全角字符转换为半角
    public static string ToBj(string s)
    
{
        
if (s == null || s.Trim() == string.Empty)
        
{
            
return s;
        }

        
else
        
{
            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();
        }

    }



半角全角转化第二种方法:
/// 转全角的函数(SBC case) /// /// 任意字符串 /// 全角字符串 ///  ///全角空格为12288,半角空格为32 ///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248 ///
        public string ToSBC(string input)
        { //半角转全角:
            char[] c = input.ToCharArray();
            for (int i = 0; i < c.Length; i++)
            {
                if (c[i] == 32)
                {
                    c[i] = (char)12288;
                    continue;
                }
                if (c[i] < 127)
                    c[i] = (char)(c[i] + 65248);
            }
            return new string(c);
        }
        /// /// 转半角的函数(DBC case) /// /// 任意字符串 /// 半角字符串 ///
        /// ///全角空格为12288,半角空格为32 ///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248 ///
        ///
        public string ToDBC(string input) {
            char[] c=input.ToCharArray();
            for (int i = 0; i < c.Length; i++)
            {
                if (c[i]==12288)
                {
                    c[i]= (char)32; continue;
                }
                if (c[i]>65280 && c[i]<65375)
                    c[i]=(char)(c[i]-65248);
            }
            return new string(c);
        }


阅读(3014) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~