2013-04-05 3 views
0

일치하는 색인의 특정 문자를 사용하여 java의 String에있는 문자를 바꿀 수 있습니다.정규 표현식으로 다른 문자를 색인으로 대체 하시겠습니까?

: 일부 특정 맵 사용하려는

:

A = D, B = E는 C =이어서

F : 찾는 전자와 B, 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"; 

// 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); 
: 당신이 정규 표현식을 사용하여 주장하는 경우

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

(이 경우에 대한 바보 같은 생각이다, 그것은 비효율적이고 불필요한 이상 유지할이다), 당신은 교체를 위해 해당 룩업으로 Map을 사용할 수 있습니다

여기에 online code demo입니다.

1

왜 이렇게하지 않니?

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

는 또한 정규식을 사용하는 참고, 당신은 replaceAll()하지 replace()를 사용해야합니다.

+0

감사 합니다만, 정규 표현식을 할 수 있습니까? – carlos

관련 문제