2013-04-05 38 views
0

可能用java中的String替換字符,使用匹配指令中的特定字符。用正則表達式替換其他索引的字符?

例如:

我想使用一些特定的地圖:

一個= d,B = E,C = F

然後:一個要與d取代的a,b與e和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 2013-04-05 19:33:51