2015-08-26 41 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