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());
}
s=s.replaceAll("#","");
StringTokenizer st=new StringTokenizer(s,"@");
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
可能没看明白我得意思
并且组成最多20个字节一组打印出来,不是就这么按照分隔符打印出来,就是说如果"12#r#yu#sd#7y#iu"去掉#之后有15个字节而“9#e#h#8#o#i@712#r67#y8#s0d#7#iu“去掉#之后有5个字节则把它们合并打印出来,如果后面那串大于5个字节,就光打印第一串,让第二串再和第三串拼,以此类推,到最后把群不都打印出来
如果a字节数是12,b的字节数是10,c得字节数10
那么就是打印出a,在打印出b+c的合串。因为a+b>20了,所以就打印a,如果c得字节数为5,也是打印出b+c的合串,就是字节数不超过20为前提,为@分割为前提
分不够可以再加,另外还有就是如果得到最后拼成的总串数。
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());
}
这里没有环境,没有调试,你先试试
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;
}
这个
输入"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
712r67y8s0d7iu
712r67y8s0d7iu
9i0eh5h68hj)oiuh7
上面错了,输出着这个多了一个712r67y8s0d7iu
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;
}