C#解决汉字长度判断的问题
C#判断string的长度时一律按照字符处理,汉字也是一个字符长度,这应该是个bug,如果string存在汉字,取长度时一定要注意。如果直接取string的length,一定是错误的,我在网上看到有人按照汉字编码判断取长度,如下:
public static int GetLength(string str)
{
if (str.Length == 0) return 0;
ASCIIEncoding ascii = new ASCIIEncoding();
int tempLen = 0; byte[] s = ascii.GetBytes(str);
for (int i = 0; i < s.Length; i++)
{
if ((int)s[i] == 63)
{
tempLen += 2;
}
else
字符串长度判断 {
tempLen += 1;
}
}
return tempLen;
}
这种做法对大字串来说效率很低,我另外想了一个办法,因为string转为byte[]后,长度不变,而byte[]不存在汉字的问题,何不直接取byte[]的长度呢,所以方法如下:
int BodySize = Encoding.Default.GetBytes(In_SendMessage).Length
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论