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

EDIT:

Что делать, если я хочу заменить 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

Смежные вопросы