写一个递归方法,来切
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;
}
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;
}
String str = "DD8380C7000000000000000000000000";
String a = str.replaceAll("[\\w]{4}", "$0:");
System.out.println(a);
}
System.out.println(b);
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);
}
}
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
谢谢!,今天看过了,group分组的,例如((a)(b))0和1表示全匹配返回子字符串的引用,2表示a,3表示b,是不是这样呢
public static void main(String[] args) {
String str = "DD8380C7000000000000000000000000";
String a = str.replaceAll("[\\w]{4}", "$0:");
System.out.println(a);
}replaceAll("[\\w]{4}", "$0:")后面那个参数是什么意思呢?
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);
}
}
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类里面看看,你调用的方法我都不知道。嘻嘻,谢谢大神
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);
楼主去网上了解下正则表达式的方法就知道其中的大概规则了。
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);
}
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));//去除最后一个:号
这个方法比较简单。
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,我的思路很简单。容易实现。
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());
使用字符数组转化为字符数组,遍历数组添加符号。