写一个递归方法,来切
public String fun(String str){

if(str==null||str.length()<=4){
return str;
}

String s = str.substring(0,4)+":"+fun(str.substring(4));

return s;
}

解决方案 »

  1.   

    public static void main(String[] args) {
     String str = "DD8380C7000000000000000000000000";
     String a = str.replaceAll("[\\w]{4}", "$0:");
     System.out.println(a);
    }
      

  2.   

    接二楼String b = a.substring(0, a.length()-1);
    System.out.println(b);
      

  3.   

     String a = str.replaceAll("\\w{4}", "$0:");里面的$0是不是就是前面四个返回的?新人求问第二个参数啥意思
      

  4.   

    楼主看看这样可否?算法太差,纯粹是来骗分的public class Test1 {
    public static void main(String[] args) {
    String str = "DD8380C7000000000000000000000000";
    String str4Dest = "";
    int count = 0;
    while(str.length() != 0) {
    count++;
    str4Dest += str.charAt(0);
    str = str.substring(1);
    if(count == 4) {
    count = 0;
    str4Dest += ":";
    }
    }
    System.out.println(str4Dest);
    }
    }
      

  5.   

    如果你只是想简单的实现你的想法,不考虑其他的因素,就直接可以利用字符串的substring(参数1,参数2)方法,第一个参数是下标值,第二个参数是长度,然后你在每次截取的后面加上:就行了。
      

  6.   

    public class Main {
    public static void main(String[] args) {
    String str = "D8380C7000000000000000000000000";
    System.out.println(split4WordByColon(str));
    } public static String split4WordByColon(String str) {
    if (str == null || str.length() <= 4) {
    return str;
    }
    String s = split4WordByColon(str.substring(0, str.length() - 4)) + ":"
    + str.substring(str.length() - 4, str.length());
    return s;
    }
    }
    递归方法,正序,不满足4个情况也可以处理。
    D83:80C7:0000:0000:0000:0000:0000:0000
      

  7.   

    代表整个被匹配的字符串(也就是每四个),如果把每个正则表达式都用小括号括起来,每个括号包含的内容称作一个分组
    谢谢!,今天看过了,group分组的,例如((a)(b))0和1表示全匹配返回子字符串的引用,2表示a,3表示b,是不是这样呢
      

  8.   


    public static void main(String[] args) {
     String str = "DD8380C7000000000000000000000000";
     String a = str.replaceAll("[\\w]{4}", "$0:");
     System.out.println(a);
    }replaceAll("[\\w]{4}", "$0:")后面那个参数是什么意思呢?
      

  9.   

    在你的例子中0和1的效果等同,但实际上1并不是匹配整个字符串,而是第一个括号(也就是最外面的)。我写了个小例子,你看看,有助理解import java.util.regex.*;
    public class TestPatternGroup{
    public static void main(String[] args){
    //group,用()分组
    Pattern pt = Pattern.compile("([a-z]{2,5})(\\d{2,4})");
    Matcher mt = pt.matcher("et14-oak11-viva777"); //groupCount()  返回此匹配器模式中的捕获组数
    // 根据惯例,零组表示整个模式。它不包括在此计数中
    prt(mt.groupCount()); while(mt.find()){
    //prt(mt.group());
    //prt(mt.group(0));
    prt(mt.group(1));
    //prt(mt.group(2));
    }
    } public static void prt(Object obj){
    System.out.println(obj);
    }
    }
      

  10.   

    在你的例子中0和1的效果等同,但实际上1并不是匹配整个字符串,而是第一个括号(也就是最外面的)。我写了个小例子,你看看,有助理解import java.util.regex.*;
    public class TestPatternGroup{
    public static void main(String[] args){
    //group,用()分组
    Pattern pt = Pattern.compile("([a-z]{2,5})(\\d{2,4})");
    Matcher mt = pt.matcher("et14-oak11-viva777"); //groupCount()  返回此匹配器模式中的捕获组数
    // 根据惯例,零组表示整个模式。它不包括在此计数中
    prt(mt.groupCount()); while(mt.find()){
    //prt(mt.group());
    //prt(mt.group(0));
    prt(mt.group(1));
    //prt(mt.group(2));
    }
    } public static void prt(Object obj){
    System.out.println(obj);
    }
    }
    好的,当初是在replaceAll里面知道这个的,看来还要去Matcher类里面看看,你调用的方法我都不知道。嘻嘻,谢谢大神
      

  11.   

    推荐二楼的方法,不过二楼的需要增强下
    String str = "DD8380C7000000000000000000000000";
    String a = str.replaceAll("[\\w]{0,4}", "$0:");
    while(a.lastIndexOf(":") == a.length()-1){
    a = a.substring(0, a.length()-1);
    }
    System.out.println(a);
    楼主去网上了解下正则表达式的方法就知道其中的大概规则了。
      

  12.   

    String str = "DD8380C7000000000000000000000000";
    String a = str.replaceAll("[a-z 0-9 A-Z]{4}", "$0:");
    if(a.lastIndexOf(':')==(a.length()-1)){
    String ret = a.substring(0,a.length()-1);
    System.out.println(ret);
    }
      

  13.   

    String str1="DD8380C7000000000000000000000000";
    String tempstr="";
    for(int i=0;i<str1.length();i=i+4)
    {
     tempstr=String.format("%s:", tempstr+str1.substring(i,i+4));
    }
     System.out.println(tempstr.substring(0,tempstr.length()-1));//去除最后一个:号
    这个方法比较简单。
      

  14.   

    public class Test { public static void main(String[] args) {
    String str = "DD8380C7000000000000000000000000";
    char[] arr = str.toCharArray();
    StringBuffer sb = new StringBuffer();
    for(int i=0;i<arr.length;i++){
    if(i>0&&i%4==0){
    sb.append(":");
    sb.append(arr[i]);
    }else
    sb.append(arr[i]);
    }
    String s = new String(sb);
    System.out.println(s);
    }
    }
    使用字符数组,配合StringBuffer,我的思路很简单。容易实现。
      

  15.   

    String str = "DD8380C7000000000000000000000000";
    char[] s = str.toCharArray();
    StringBuffer stri = new StringBuffer();
    for (int i = 0; i < s.length; i++) {
    if (i == 0) {
    stri.append(s[i]);
    continue;
    }
    stri.append(s[i]);
    if ((i + 1) % 4 == 0) {
    if ((i + 1) != s.length) {
    stri.append(":");
    }
    }
    }
    System.out.println(stri.toString());
    使用字符数组转化为字符数组,遍历数组添加符号。