拼串的问题

lei414 2005-01-18 09:04:18
有这样一个string a="12#r#yu#sd#7y#iu@9#e#h#8#o#i@712#r67#y8#s0d#7#iu@9i0#eh5#h6#8hj#)o#iuh7";
"#"是列分隔符
"@"是行分隔符
我想把a转化成没有分隔符的字符串,并且组成最多20个字节一组打印出来,而且要以@分割不拆乱为前提的。
可能说得不大明白就是这个意思,怎么样输出12ryusd7yiu
9eh8oi712r67y8s0d7iu
9i0eh5h68hj)oiuh7
这样三个串?
...全文
130 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
lei414 2005-01-19
  • 打赏
  • 举报
回复
还有个小问题就是怎么得到出来的串数
lei414 2005-01-19
  • 打赏
  • 举报
回复
谢谢,解决了
jFresH_MaN 2005-01-19
  • 打赏
  • 举报
回复
我刚才测试了,是对的啊
String s="12#r#yu#sd#7y#iu@9#e#h#8#o#i@712#r67#y8#s0d#7#iu@9i0#eh5#h6#8hj#)o#iuh7";
s=s.replaceAll("#","");
String []ss=s.split("@");
int i=0;
while(i<ss.length) {
if(i==ss.length-1) System.out.println(ss[i-1]);
StringBuffer sb=new StringBuffer(ss[i]);
int temp=i+1;
while((temp<ss.length)&&((sb.length()+ss[temp].length())<=20)) {
sb.append(ss[temp]);
temp++;
}
System.out.println(sb.toString());
i=temp;
}
lei414 2005-01-19
  • 打赏
  • 举报
回复
12ryusd7yiu9eh8oi
712r67y8s0d7iu
712r67y8s0d7iu
9i0eh5h68hj)oiuh7
上面错了,输出着这个多了一个712r67y8s0d7iu
lei414 2005-01-19
  • 打赏
  • 举报
回复
好像不对
输入"12#r#yu#sd#7y#iu@9#e#h#8#o#i@712#r67#y8#s0d#7#iu@9i0#eh5#h6#8hj#)o#iuh7"
出来就是按照@分割的5个串
12ryusd7yiu
9eh8oi
712r67y8s0d7iu
712r67y8s0d7iu
9i0eh5h68hj)oiuh7
不徻写代码 2005-01-19
  • 打赏
  • 举报
回复
up
lei414 2005-01-19
  • 打赏
  • 举报
回复
我先试试看:)
kong555 2005-01-18
  • 打赏
  • 举报
回复
哈哈
jFresH_MaN 2005-01-18
  • 打赏
  • 举报
回复
String s="12#r#yu#sd#7y#iu@9#e#h#8#o#i@712#r67#y8#s0d#7#iu@9i0#eh5#h6#8hj#)o#iuh7";
s=s.replaceAll("#","");
String []ss=s.split("@");
int i=0;
while(i<ss.length) {
if(i=ss.length-1) System.out.println(ss[i-1]);
StringBuffer sb=new StringBuffer(ss[i]);
int temp=i+1;
while((temp<ss.length)&&((sb.length()+ss[temp])<=20)) {
sb.append(ss[temp]);
temp++;
}
System.out.println(sb.toString());
i=temp;
}
这个
jFresH_MaN 2005-01-18
  • 打赏
  • 举报
回复
String s="12#r#yu#sd#7y#iu@9#e#h#8#o#i@712#r67#y8#s0d#7#iu@9i0#eh5#h6#8hj#)o#iuh7";
s=s.replaceAll("#","");
String []ss=s.split("@");
int i=0;
while(i<ss.length) {
if(i=ss.length-1) System.out.println(ss[i-1]
StringBuffer sb=new StringBuffer(ss[i]);
int temp=i+1;
while((temp<ss.length)&&((sb.length()+ss[temp])<=20)) {
sb.append(ss[temp]);
temp++;
}
System.out.println(sb.toString());
}
这里没有环境,没有调试,你先试试
jFresH_MaN 2005-01-18
  • 打赏
  • 举报
回复
好,知道了,稍等
lei414 2005-01-18
  • 打赏
  • 举报
回复
再帮我看看
jFresH_MaN 2005-01-18
  • 打赏
  • 举报
回复
啊?没明白。呵呵
lei414 2005-01-18
  • 打赏
  • 举报
回复
就是a@b@c,先假设a,b,c的字节数都不会大于等于20
如果a字节数是12,b的字节数是10,c得字节数10
那么就是打印出a,在打印出b+c的合串。因为a+b>20了,所以就打印a,如果c得字节数为5,也是打印出b+c的合串,就是字节数不超过20为前提,为@分割为前提
分不够可以再加,另外还有就是如果得到最后拼成的总串数。
lei414 2005-01-18
  • 打赏
  • 举报
回复
to jFresH_MaN(我本将心照明月,奈何明月照沟渠!) :
可能没看明白我得意思
并且组成最多20个字节一组打印出来,不是就这么按照分隔符打印出来,就是说如果"12#r#yu#sd#7y#iu"去掉#之后有15个字节而“9#e#h#8#o#i@712#r67#y8#s0d#7#iu“去掉#之后有5个字节则把它们合并打印出来,如果后面那串大于5个字节,就光打印第一串,让第二串再和第三串拼,以此类推,到最后把群不都打印出来
xu_xinyu 2005-01-18
  • 打赏
  • 举报
回复
学习
jFresH_MaN 2005-01-18
  • 打赏
  • 举报
回复
好奇怪,一楼和二楼的时间竟然比发贴时间还晚
jFresH_MaN 2005-01-18
  • 打赏
  • 举报
回复
String s="12#r#yu#sd#7y#iu@9#e#h#8#o#i@712#r67#y8#s0d#7#iu@9i0#eh5#h6#8hj#)o#iuh7";
s=s.replaceAll("#","");
StringTokenizer st=new StringTokenizer(s,"@");
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
lei414 2005-01-18
  • 打赏
  • 举报
回复
请大家帮忙看看,谢谢!

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧