java替换固定格式的表达式
1、inStr 需要替换的字符串
2、mapvalue 替换的Map
3、(1) regex ="\\/\\*(\\s*)(sqlwhere)(\\s*)\\*\\/"; 替换规则 包含 /*sqlwhere*/
(2) regex ="\\@(.*?)\\@"; 替换规则 @任意字符@
public void replaceStr(){
String str = "@Test1@/* sqlwhere */@Test2@";
String regex ="\\/\\*(\\s*)(sqlwhere)(\\s*)\\*\\/";
Map<String,Object> mapvalue= new HashMap<>();
mapvalue.put("Test1","替换1");
mapvalue.put("Test2","替换2");
String out=getStrings(str, mapvalue);
System.out.println(out);
System.out.println(str.replaceAll(regex,""));
}
public String getStrings(String inStr, Map<String,Object> mapvalue) {
String outStr = inStr;
String regex ="\\@(.*?)\\@";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(inStr);
while (m.find()) {
String ppStr =m.group(0);
String ppReslutStr =m.group(1);
outStr=outStr.replaceAll(ppStr,getMapValue(mapvalue,ppReslutStr));
}
return outStr;
}
private String getMapValue( Map<String,Object> mapvalue,String key){
String outStr = key;
if(mapvalue.containsKey(key)){
outStr=mapvalue.get(key).toString();
}
return outStr;
}