【分享+原创+散分】高效中英文字符串截取方法
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);
}测试代码:
Console.WriteLine(Intercept("ABC中国人", 7));
Console.WriteLine(Intercept("ABCD中国人", 7));
Console.WriteLine(Intercept("ABC中D国人", 7));在网上也发现了一些截取函数,但大都使用正则或者字符串的截取,方法性能相对低下
今天看了一些关于.NET编码的文章,于是有了今天的方法,其实原理很简单,不过没见网上有过。
所以拿来分享~
大牛们表笑话我哈
另:没经过严格测试,如果有BUG,请跟贴,谢谢~~
...全文
相关推荐
PHP指定截取字符串中的中英文或数字字符的实例分享
本文将详细介绍如何在PHP中指定截取字符串中的中英文或数字字符,并分享过滤字符串中空格的实例。首先,处理字符串时需要明白中英文字符编码上的差异。
asp截取字符串的两种应用 原创
本文档探讨了在ASP编程环境下,截取字符串的两种常见应用场景。首先,作者分享了一个名为`cutstr`的函数,用于纯粹的字符串截取。该函数接收两个参数:一个待处理的字符串`thestr1`和一个指定的
ASP.NET两个截取字符串的方法分享
在ASP.NET开发中,字符串处理是一项常见的任务,尤其是在构建用户界面和处理用户输入时。本文主要介绍了两种实用的字符串截取方法,适用于不同的场景和需求。首先,我们来看第一个方法`CutStr(s
php对包含html标签的字符串进行截取的函数分享
**函数实现**: - 使用`mb_strlen`函数计算字符串的长度,考虑中英文字符。 - 如果字符串长度小于截取长度,直接返回原字符串。
.NET截取指定长度汉字超出部分以"..."代替 实例分享
在.NET开发中,正确处理字符串非常重要,尤其是在处理涉及多种语言和字符集的全球化应用时。在本实例中,使用的方法能够有效地处理中英文混合的字符串,而不会因为截断操作导致文本内容的语义发生变化。


