c# 超长字符串截取固定长度后显示...(超长后面显示点点点) 通用方法

时间:2025-04-11 15:36:01

通用方法:

此方法是采用unicode编码方式,一个汉字为2个字节,一个数字or字母是1个字节,此方法传入的第二个长度参数是unicode长度。

所以不用考虑截取的字符串是汉字还是英文字母的问题,参数length 可以理解为应该显示的宽度即可。

   public string GetFirstString(string stringToSub, int length)
{
Regex regex = new Regex(@"[\u4e00-\u9fa5]+", RegexOptions.Compiled);
char[] stringChar = stringToSub.ToCharArray();
StringBuilder sb = new StringBuilder();
int nLength = ;
for (int i = ; i < stringChar.Length; i++)
{
if (regex.IsMatch((stringChar[i]).ToString()))
{
nLength += ;
}
else
{
nLength = nLength + ;
} if (nLength <= length)
{
sb.Append(stringChar[i]);
}
else
{
break;
}
}
if (sb.ToString() != stringToSub)
{
sb.Append("...");
}
return sb.ToString();
} 调用方法:
string NewStr = GetFirstString(OldStr, 25);//第一个参数原字符串,第二个参数截断的长度