【转载】C#字符串截取指定长度的中⽂字符--精点
通常,⼀个中⽂会占两个字节的空间。很多语⾔⾥,⼀个中⽂字符就算是2个字符长度。
判断字符串长度但在C#中,string⾥包含的中⽂字符只占⼀个字符长度。这就导致很多时候,使⽤string.SubString(int startIndex,int length)⽅法来截取字符会错位。
最近由于⼯作原因,会截取指定长度的字符来使⽤。但是在⽂档⾥,1个中⽂是2个长度来计算。刚开始还只是以为⽂档错误,后来才知道是由于C#的差异造成的。
刚开始,是直接到⽹上算法,但是到的算法,基本思路都是挨个字符判断(根据ASCII值)。不是算法复杂,就是容易出错,且不能涵盖所有的中⽂。
稍微研究了下,还是利⽤.Net框架⾃带的⽅法最简单。
基本思路如下,将string转化为byte[] ,将byte[]截取后,再转化为string ,这种⽅法,两步完成,且可谓万⽆⼀失。
public static string SubString(string toSub,int startIndex,int length)
{
byte[] subbyte=System.Text.Encoding.Default.GetBytes(toSub);
string Sub=System.Text.Encoding.Default.GetString(subbyte,startIndex,length);
return Sub;
}
稍微解释下参数,toSub -需要截取的字符串,startIndex -开始截取的位置索引, length -截取的长度
⽤法基本和string.SubString(int startIndex,int length)⼀样。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。