2013-04-05 4 views
0

Возможно заменить символ в String в java, используя определенный символ из индекса соответствия.Заменить регулярным выражением символ с другим индексом?

Например:

Я хочу использовать некоторые конкретные карты:

а = d, Ь = е, с = е

Тогда: Требуется заменить а с д, б с е и c с f.

Это идея кода:

String src = "text_abc"; 
    String regex = "a|b|c"; 
    String replacement = "d|e|f"; 
    String replaced = src.replace(regex, replacement); 

Я не знаю, что регулярное выражение, которое я должен использовать в регулярных выражениях и замены для этого.

ответ

1

Вы можете использовать String.replace(char, char) для этого случая.

String src = "text_abc"; 
String replaced = src.replace('a', 'd') 
        .replace('b', 'e') 
        .replace('c', 'f'); 

Если вы настаиваете на использовании регулярных выражений (что это глупая идея для этого случая, это неэффективная и излишне неосновательный), вы можете использовать Map с соответствующей справочной для замены:

String src = "text_abc"; 

// Can move these to class level for reuse. 
final HashMap<String, String> map = new HashMap<>(); 
map.put("a", "d"); 
map.put("b", "e"); 
map.put("c", "f"); 
final Pattern pattern = Pattern.compile("[abc]"); 

String replaced = src; 
Matcher matcher; 
while ((matcher = pattern.matcher(replaced)).find()) 
    replaced = matcher.replaceFirst(map.get(matcher.group())); 

// System.out.println(replaced); 

Адрес online code demo.

1

Почему бы вам не сделать это так?

String replaced = src.replace("a", "d").replace("b", "e").replace("c", "f"); 

Также обратите внимание, что для использования регулярных выражений, вам нужно использовать replaceAll() не replace().

+0

спасибо, но возможно ли это с регулярным выражением? – carlos

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