C#完美截断字符串代码(中文+非中文)攻略
概述
在C#中,对一个字符串进行截断,即取其中一部分,是一个比较常见的操作。本文将介绍一种完美的字符串截断方法,支持中文和非中文的字符串。
方法
string SubstringSmart(string str, int length)
{
if (string.IsNullOrEmpty(str))
{
return string.Empty;
}
int len = 0;
var newStr = string.Empty;
var charArr = str.ToCharArray();
int strLength = charArr.Length;
for (int i = 0; i < strLength && len < length; i++)
{
var item = charArr[i];
if ((item >= 0x4e00 && item <= 0x9fbb) || (item >= 0xff00 && item <= 0xffef))
{//中文或全角字符算2个字符
len += 2;
}
else
{
len += 1;
}
if (len <= length)
{
newStr += item;
}
}
return newStr;
}
代码解释
- 如果输入的字符串为空,则直接返回一个空字符串;
- 初始化变量len、newStr、charArr、strLength;
- 通过ToCharArray()方法将字符串转换成字符数组,以便进行以下字符遍历和取值的操作;
- 遍历字符数组,对于中文和全角字符,算作2个字符,其他字符算作1个字符;
- 如果字符数组中的字符长度小于等于要截取的长度,则将字符串全部返回,否则截取指定长度并返回截取后的字符串。
示例说明
示例一
对于一个字符串"hello world",调用 SubstringSmart("hello world", 5)
方法,预期得到的字符串返回结果为"hello"。
示例二
对于一个字符串"百度是一个非常好的网站",调用 SubstringSmart("百度是一个非常好的网站", 14)
方法,预期得到的字符串返回结果为"百度是一个非常"。
结论
通过以上代码解释和示例说明,我们可以实现一种完美的字符串截断方法,支持中文和非中文字符串。这种方法可以应用在各种需要对字符串进行截取的场景中,例如在网页中对标题或者文章进行截断显示操作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c#完美截断字符串代码(中文+非中文) - Python技术站