之前写代码遇到的一个问题,需要把使用groovy的MarkupBuilder生成的XML中属性的单引号(’ ‘)转换成双引号(" "),一开始是直接在生成的XML输出时用.replaceAll()来替换,但是考虑到如果生成的XML的节点内容中也包含单引号(’ ')也会被一同替换,于是写了一个函数来控制:
public static String replaceSingleQuote(String s){
Pattern p = Pattern.compile("(<[^>//]*>)");
Matcher m = p.matcher(s);
List<String> result = new ArrayList();
while(m.find()){
result.add(m.group());
}
for(String s1 : result){
String s2 = s1.replace("\'", "\"");
s = s.replace(s1, s2);
}
return s;
}