在当前一个项目中,需要计算字符串的长度,并将固定长度字符截下来,其中汉字要按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( "abc汉字字符" , 5 , aAfterStr ) str = "abc汉" aAfterStr ="字字符" 已了却一直以来使用 str.Length 把汉字当一个字符来用的毛病