如何在不分割字符串的情况下用其他字符串替换字符串

时间:2018-07-12 11:20:27

标签: java string str-replace

我有一个字符串

 String constantString="paramesh,ramesh,suresh";

我想用venky代替paramesh,用mahesh代替ramesh,用fine代替suresh,等等,而不会拆分字符串。

输出类似:venky,mahesh,fine etc

1 个答案:

答案 0 :(得分:4)

如果您要进行多个替换,则可以将它们存储在Map<String, String>中,然后使用String.replaceAll(String)而不是String.replace(String),因为对我而言,确保在另一个单词中没有一个单词(< em> paramesh 中的em> ramesh ),则需要带有\b的正则表达式,这意味着单词绑定Pattern.quote()在此处会破坏正则表达式的特殊字符

Map<String, String> replacements = new HashMap<String, String>();
replacements.put("paramesh", "venky");
replacements.put("ramesh", "mahesh");
replacements.put("suresh", "fine");

String constantString="paramesh,ramesh,suresh";

for(Map.Entry<String,String> entry : replacements.entrySet()){
  constantString = constantString.replaceAll("\\b" + Pattern.quote(entry.getKey()) + "\\b", 
                                             entry.getValue());
}

Workable Demo