111,126
社区成员
发帖
与我相关
我的任务
分享
方法一
在unicode 字符串中,中文的范围是在4E00..9FFF:CJK Unified Ideographs。
通过对字符的unicode编码进行判断来确定字符是否为中文。
protected bool IsChineseLetter(string input,int index)
...{ int code = 0;
int chfrom = Convert.ToInt32("4e00", 16); //范围(0x4e00~0x9fff)转换成int(chfrom~chend)
int chend = Convert.ToInt32("9fff", 16);
if (input != "")
...{
code = Char.ConvertToUtf32(input, index); //获得字符串input中指定索引index处字符unicode编码
if (code >= chfrom && code <= chend)
...{
return true; //当code在中文范围内返回true
}
else
...{
return false ; //当code不在中文范围内返回false
}
}
return false;
}
public double GetLength(string p_Text)
{
double _Count = 0;
for (int i = 0; i != p_Text.Length; i++)
{
if (p_Text[i] > 255) //汉字一定大于255
{
_Count += 2;
}
else
{
if (p_Text[i] >= 65 && p_Text[i] <= 90)
{
_Count++; //26个大写字母
}
else
{
_Count += 0.5;
}
}
}
return _Count;
}