public static string Intercept(string input, int p)
{
Encoding encode = Encoding.GetEncoding("gb2312");
byte[] byteArr = encode.GetBytes(input);
if (byteArr.Length <= p) return input;
int m = 0, n = 0;
foreach (byte b in byteArr)
{
if (n >= p) break;
if (b > 127) m++; //重要一步:对前p个字节中的值大于127的字符进行统计
n++;
}
if (m % 2 != 0) n = p + 1; //如果非偶:则说明末尾为双字节字符,截取位数加1
return encode.GetString(byteArr, 0, n);
}
字符串截取
最新推荐文章于 2024-10-09 20:11:00 发布
本文介绍了一种用于处理中文字符串截取的算法实现。该算法能够智能判断并正确处理双字节字符,确保截断后的字符串内容完整且语法上正确。通过统计前p个字节中值大于127的字符数量来决定是否需要额外保留一个字节以保持汉字的完整性。
1468

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



