C#中全角字符转换为半角[转]
//判断字符是否英文半角字符或标点
//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();
}
}
//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();
}
}