2015-03-13 2 views
-4

входной строки:Заменить каждый второй экземпляр ограничителя с характером

"/key1/2/key2/3/key4/5/key6/6/key7/7" 

нужен заменить каждый второй экземпляр разделителя "/" с ":".

Это можно обработать, если мы сломаем входную строку, разделенную "/", и построим выходную строку на основе этого, но нужно найти самый простой способ сделать это.

Ожидаемый результат Строка:

"/key1:2/key2:3/key4:5/key6:6/key7:7"  
+0

Пожалуйста, пост код, который вы пробовали до сих пор – badfilms

ответ

1

Try регулярное выражение, как это:

public static void main(String[] args) { 
    String s = "/key1/2/key2/3/key4/5/key6/6/key7/7"; 
    System.out.println(s.replaceAll("(?<=\\d+)/(?=\\d+)", ":")); 
} 

O/P:

/key1:2/key2:3/key4:5/key6:6/key7:7 
5

Вы можете использовать string.replaceAll функцию.

String s = "/key1/2/key2/3/key4/5/key6/6/key7/7"; 
System.out.println(s.replaceAll("(/[^/]*)/", "$1:")); 

Выход:

/key1:2/key2:3/key4:5/key6:6/key7:7 

Это регулярное выражение будет соответствовать вперед косые черты в паре и захватить первую косую черту, а также следующие Непро- / символов. Заменив все совпадающие символы $1:, вы получите желаемый результат.

DEMO

+0

К сожалению, я неправильно понял регулярное выражение. Виноват. –

+1

Спасибо, что я искал !! – user2789973

0

Split и восстановить строку?

(псевдокод)

boolean first = true; 
out = ""; 
for(s:str.split("/")){ 
    if(!(first = !first)){ 
     out += "/" 
    }else{ 
     out += ":" 
    } 
    out += s; 
} 
Смежные вопросы