依据:全角输入每个字符占用2个字节,半角输入汉字2个字节、字母数字1个字节。
思路:排出输入内容中的中文,剩下的字符的字节数字与减去汉字的长度相等就是半角输入的,否则就是全角输入啦。
/// <summary>
/// 判断当前字符串是否为输入法半角模式输入
/// </summary>
/// <param name="info">字符串</param>
/// <returns>是否是半角输入模式</returns>
public static bool IsHalfAngleMode(String info)
{
bool ret = true;
int infoLength = info.Length;
int infoByteCount = Encoding.Default.GetByteCount(info);
/**
* 字符串中的中文字节数统一按照1个计算(中文全角半角字节正常都是2个)
*/
int cnCount = 0; // 字符串出现中文的个数
for (int i = 0; i < infoLength; i++)
{
// 用正则表达式判断也是用汉字的 UNICODE 编码范围,即\u4e00-\u9fbb
if (Regex.IsMatch(info[i].ToString(), @"[\u4e00-\u9fbb]"))
{
cnCount += 1;
}
}
infoByteCount = infoByteCount - cnCount;
if (infoByteCount > infoLength)
{
ret = false;
}
return ret;
}