java 一个字符串12345678,怎样每隔2个数字,用#连接起来

如题所述

第1个回答  推荐于2018-04-19
String getStr(String str) {
if (str.length() <= 2) {
return str;
}
return str.substring(0, 2) + "#" + getStr(str.substring(2));
}

不要太简单

本回答被网友采纳
第2个回答  2014-03-07
package com.gaeainfo.move.ws;

public class Test {

public static void main(String[] args) {
String a = "sdsafcdsfvdsvdsvdsvdsvdsz";
int b = a.length();
StringBuffer sb = new StringBuffer();
int aa = 1;
int bb = 0;
for(int i = 0;i<=b;i++){
if(i%2==0 && i!=0){
if(aa==1){
sb.append(a.substring(0, i));
bb = i;
aa++;
sb.append("#");
}else{
sb.append(a.substring(bb, i));
bb = i;
sb.append("#");
}
}
if(i==b && i%2!=0){
sb.append(a.substring(i-1, i));
}
}
System.out.println(sb.toString());
}
}

第3个回答  2014-03-07
String s = "124324234254";

char[] chars = s.toCharArray();
String temps = "";
for(int i =0 ;i<chars.length;i=i+2){
temps=temps+"#"+chars[i]+chars[i+1];
}

temps=temps.replaceFirst("#", "");

s可以是任意长度的数字。前提必须是偶数位的,否则会报数组越界
temps 是替换完毕后的字符串,
第4个回答  2014-03-07
String reg = "(\\d{2})(\\d{2})(\\d{2})(\\d{2})";
String str = "12345678";
str.replaceAll(reg, "$1#$2#$3#$4");追问

假如不清楚多少个字符,只知道是2的倍数,我该怎么做啊???

追答

String str2 = "1234567890";
String reg2 = "";
String res = "";
for(int i = 0; i < str2.length() / 2; i++)
{
reg2 += "(\\d{2})";
res += "$" + (i + 1);
if(i != str2.length() / 2 - 1)
{
res += "#";
}
}
System.out.println(reg2);
System.out.println(res);
System.out.println(str2.replaceAll(reg2, res));

本回答被提问者采纳
第5个回答  2014-03-07
两种算法:

1、利用循环将字符串从后面截取,每次截取2个字符加#号,最后串起来就可以得到结果。这种方法容易理解,但代码较长。
2、利用java的java.text.DecimalFormat格式化类,方法如下:
String str = "12345678";
DecimalFormat df = new DecimalFormat("##,##");
String ret=df.format(Double.parseDouble(str));
ret=ret.replaceAll(",","#");

System.out.println(ret);

这种方法简单明了,不管是多少字符都可以。
相似回答