我有以下代码:
public String replaceValues(String string, HashMap hashMap){ TestHashMap h = new TestHashMap(); String str = new String(h.xmlToString()); Iterator iterator = hashMap.entrySet().iterator(); while(iterator.hasNext()){ HashMap.Entry pair = (HashMap.Entry)iterator.next(); str = str.replaceAll(pair.getKey().toString(), pair.getValue().toString()); } return str; } public static void main(String[] args) { TestHashMap h = new TestHashMap(); HashMaphmap = new HashMap (); hmap.put("{username}", "Tudor"); hmap.put("{password}", "Tester123"); System.out.println(hmap); String replace = h.replaceValues(h.xmlToString(), hmap); System.out.println(replace); }
XML文件如下所示:
{username} {password}
抛出异常:非法重复.但是我没有办法逃避"{}"字符,因为我得到的方法是使用getKey()和getValue()方法,它按预期返回{password}和{username}.然而它打破了String replace = h.replaceValues(h.xmlToString(), hmap)
.有解决方案吗?值得一提的是,如果我用随机值替换{password}(例如"password1"),上面的代码可以正常工作.
该replaceAll
方法使用正则表达式,与{
和}
具有特殊的意义.如果你使用replace(String, String)
它们,它们被视为正常的字符串,并且没有这样的问题.