c#按字节数截取字符串

怎么做... 怎么做 展开
 我来答
xtfnpgy
2014-11-30 · TA获得超过1784个赞
知道大有可为答主
回答量:1989
采纳率:76%
帮助的人:1088万
展开全部
需要判断是否为中文或英文字符,代码:
public static string CutByteString(string str,int startIndex,int len)
{
string result=string.Empty;// 最终返回的结果
if(string.IsNullOrEmpty(str)) { return result; }
int byteLen=System.Text.Encoding.Default.GetByteCount(str);// 单字节字符长度
int charLen=str.Length;// 把字符平等对待时的字符串长度
if(startIndex==0)
{ return CutByteString(str,len); }
else if(startIndex>=byteLen)
{ return result; }
else //startIndex < byteLen
{
int AllLen=startIndex+len;
int byteCountStart=0;// 记录读取进度
int byteCountEnd=0;// 记录读取进度
int startpos=0;// 记录截取位置
int endpos=0;// 记录截取位置
for(int i=0;i<charLen;i++)
{
if(Convert.ToInt32(str.ToCharArray()[i])>255)// 按中文字符计算加2
{ byteCountStart+=2; }
else// 按英文字符计算加1
{ byteCountStart+=1; }
if(byteCountStart>startIndex)// 超出时只记下上一个有效位置
{
startpos=i;
AllLen=startIndex+len-1;
break;
}
else if(byteCountStart==startIndex)// 记下当前位置
{
startpos=i+1;
break;
}
}
if(startIndex+len<=byteLen)//截取字符在总长以内
{
for(int i=0;i<charLen;i++)
{
if(Convert.ToInt32(str.ToCharArray()[i])>255)// 按中文字符计算加2
{ byteCountEnd+=2; }
else// 按英文字符计算加1
{ byteCountEnd+=1; }
if(byteCountEnd>AllLen)// 超出时只记下上一个有效位置
{
endpos=i;
break;
}
else if(byteCountEnd==AllLen)// 记下当前位置
{
endpos=i+1;
break;
}
}
endpos=endpos-startpos;
}
else if(startIndex+len>byteLen)//截取字符超出总长
{
endpos=charLen-startpos;
}
if(endpos>=0)
{ result=str.Substring(startpos,endpos); }
}
return result;
}
调用:
string s="一二3456七八";
s=CutByteString(s,2,5);
MessageBox.Show(s); //输出"二345"共5个字节
参考:
http://wenku.baidu.com/link?url=5qy7N1-UnVdfqTfpmf7aOezYxMde7mnCp_ce9FOGHrtABWNBuDWYTSR6MoHtxEDrsG1lMHMpR6_VcpOtCRvrJZJkc-P85T_2nGP1UWzowIO
漫步人生ahri
2014-11-29 · TA获得超过171个赞
知道小有建树答主
回答量:221
采纳率:0%
帮助的人:182万
展开全部
subString()截取字符串
用法

substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串。
substring(int beginIndex, int endIndex) 返回一个新字符串,它是此字符串的一个子字符串。
beginIndex - 起始索引(包括)。从0开始
endIndex - 结束索引(不包括)。

至于逻辑我没看,你整理一下逻辑吧
追问

这是原题,我理解的意思有错吗

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
nj30798926888
2014-12-04 · TA获得超过682个赞
知道小有建树答主
回答量:1015
采纳率:20%
帮助的人:334万
展开全部
msdn上面看下substring的用法,可以满足你的要求
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阳光的雷咩咩
2014-11-30 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:7656万
展开全部
请问这样的题意义何在呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式