您的位置:首页 > 其它

从给定字符串结尾获取指定字节长度的字符串

2013-11-16 15:00 288 查看


  

编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个,如“我ABC”,4,应该截为“ABC”,而不是半个我+ABC;输入“我汉DEF”,5,应该输出为“汉DEF”。
下面代码为从末尾取,总觉得有点繁琐,有更好的方法么?

///<summary>
///从给定的字符串后面截取指定字节长度的字符串
///</summary>
///<paramname="source">源字符串</param>
///<paramname="length">字节长度</param>
///<returns>返回的字符串</returns>
publicstaticstringGetSubString(stringsource,intlength)
{
stringreturnstring=string.Empty;
intsourceByteLen=Encoding.Default.GetBytes(source).Length;//给定字符串的字节长度
if(sourceByteLen>=length)
{
intneedLen=length;//截取的字符长度
for(inti=length/2;i<=length;i++)//从后面的字符逐渐往前加直到长度够了
{
intlen=Encoding.Default.GetBytes(source.ToCharArray(),source.Length-i,i).Length;
if(len==length)
{
break;
}
elseif(len>length)
{
needLen=length-1;
break;
}
}
byte[]name=newbyte[needLen];
byte[]byteName=Encoding.Default.GetBytes(source);
for(inti=sourceByteLen-needLen,j=0;i<sourceByteLen;i++,j++)
{
name[j]=byteName[i];
}
returnstring=Encoding.Default.GetString(name);
}
else
{
thrownewException("lengthisbiggerthansourcestringbytelength");
}
returnreturnstring;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: