日期:2014-05-18  浏览次数:20961 次

讨个高效的分段截取字符串算法,要按指定字符
假如有这样一个字符串: 
“姓名:张三/邮件:aaa@163.com/手机:13500000000/电话:01012345678 姓名:李四/邮件:nnn@163.com/手机:13500000001/电话:02012345678 姓名:张三/邮件:aaa@163.com/手机:13500000000/电话:01012345678 姓名:李四/邮件:nnn@163.com/手机:13500000001/电话:02012345678 姓名:张三/邮件:aaa@163.com/手机:13500000000/电话:01012345678 姓名:李四/邮件:nnn@163.com/手机:13500000001/电话:02012345678” 

要把这个字符串进行分段,每段的长度最大只能70个字符(中英文都算一个字符) 

但是不能把“电话”的号码截断,如果发现70个字符不能摆下“姓名:张三/邮件:aaa@163.com/手机:13500000000/电话:01012345678”的时候,需要从“电话:”这里截断,余下的内容放到下一段去,那么这一段的字符应该是“姓名:张三/邮件:aaa@163.com/手机:13500000000/电话:(待续)” 

然后把“01012345678”放到下一段里面 

那么下一段就有可能是“(接上)01012345678 姓名:李四/邮件:nnn@163.com/手机:13500000001/.............................” 

为了发短信用的。请用c#或c++实现。。

自己用了个递归实现,感觉不够好

------解决方案--------------------
做个判断 ':' 这个符号 也许可以实现你说的
当 '/' 大于 70 就只取到 ':' 再取下面的!


------解决方案--------------------
index=0;
while(str.Length>index)
{
index++;
//写你的逻辑.
}
------解决方案--------------------
引用楼主 chuxuecharp 的帖子:
自己用了个递归实现,感觉不够好