2015-08-26 35 views
4

鉴于这一行:的Java更换特定定位的分隔符与另一个分隔符

String name="Summer,John,Alex,Stu,Mike,will,King,yahoo,Google,jeff"; 

我想逗号的每4个发生后||符号来代替逗号。

预期输出:

Summer,John,Alex,Stu||Mike,will,King,yahoo||Google,jeff 

我在awk命令

awk -F, '{ 
    for (i=1; i<NF; i++) 
     printf "%s%s", $i, (i%4?FS:"||"); 
     print $i 
}' 

做到了这一点,我无法将这个命令转换成Java正则表达式。

回答

11

你可以试试这个,

String name="Summer,John,Alex,Stu,Mike,will,King,yahoo,Google,jeff"; 
System.out.println(name.replaceAll("(\\w+,\\w+,\\w+,\\w+),", "$1||")); 

输出

Summer,John,Alex,Stu||Mike,will,King,yahoo||Google,jeff 

注:\\w+意味着一个或多个单词字符和$1代表组1

编辑:

如果我想更换第100个位置,该怎么办?我需要使用100 \ w +吗?

不是真的可以用在这里再分组,并指定{}计数组类似的发生,

String name="Summer,John,Alex,Stu,Mike,will,King,yahoo,Google,jeff,test,hell,"; 
System.out.println(name.replaceAll("((\\w+,){3}(\\w+)),", "$1||")); 
+1

如果我想替换100的位置?我需要使用100 \\ w +吗? – user952977