在当前一个项目中,需要计算字符串的长度,并将固定长度字符截下来,其中汉字要按2个字符计算,数字与字母按1个字符计算,没有找到现成的函数可以使用,参考 如何得到一个汉字和字母组合的字符串的准确的长度
private int GetLength(String aOrgStr)
...{
int intLen = aOrgStr.Length;
int i;
char[] chars = aOrgStr.ToCharArray();
for (i = 0; i < chars.Length; i++)
...{
if (System.Convert.ToInt32(chars[i]) > 255)
...{
intLen++;
}
}
return intLen;
}
private String MutiSubString(String aOrgStr, int aLength, ref String aAfterStr)
...{
int intLen = aOrgStr.Length;
int start = 0;
int end = intLen;
int single = 0;
char[] chars = aOrgStr.ToCharArray();
for (int i = 0; i < chars.Length; i++)
...{
if (System.Convert.ToInt32(chars[i]) > 255)
...{
start += 2;
}
else
...{
start += 1;
single++;
}
if (start >= aLength)
...{
if (end % 2 == 0)
...{
if (single % 2 == 0)
...{
end = i + 1;
}
else
...{
end = i;
}
}
else
...{
end = i + 1;
}
break;
}
}
string temp = aOrgStr.Substring(0, end);
string temp2 = aOrgStr.Remove(0, end);
aAfterStr = temp2;
return temp;
}运行结果 :
str = MutiSubString( , 5 , aAfterStr )
str =
aAfterStr =
已了却一直以来使用 str.Length 把汉字当一个字符来用的毛病
本文介绍了一种计算包含汉字、字母和数字混合字符串的实际显示长度的方法,并提供了一个用于根据指定长度截取这些字符串的实用函数。解决了传统方式下对汉字计数不准确的问题。
3223

被折叠的 条评论
为什么被折叠?



