難以淨化字符串以允許$和/保留在字符串中。 (即想接受姓名/電子郵件以保持美元符號)。爲此,我試圖使用Pattern類,並試圖找到將Pattern方法放在公共字符串cutomiseText中的最佳解決方案。
public String customiseText(String bodyText, List<Object> objectList) {
Map<String, String> replaceKeyMap = extractMapFromList(objectList);
// iterate over the mapkey and return the body text replace
for (final String key : replaceKeyMap.keySet()) {
String replacementKey = "(?i)" + key;
String replacementValue = replaceKeyMap.get(key);
if (replacementValue == null) {
replacementValue = "";
}
bodyText = bodyText.replaceAll(replacementKey, replacementValue);
}
return bodyText;
}
//代碼不工作:
//的作品原始代碼
import java.util.regex.Pattern;
public String customiseText(String bodyText, List<Object> objectList) {
Map<String, String> replaceKeyMap = extractMapFromList(objectList);
String escapedString = Pattern.quote(bodyText); //
// iterate over the mapkey and return the body text replace
for (final String key : replaceKeyMap.keySet()) {
String replacementKey = "(?i)" + key; // not case sensitive and empty string matcher
String replacementValue = replaceKeyMap.get(key);
if (replacementValue == null) {
replacementValue = "";
}
escapedString = escapedString.replaceAll(replacementKey, replacementValue);
}
return escapedString;
}
不知道,你應該把什麼? – Ivan
在'bodyText'上調用'Pattern.quote'沒有任何意義。在'key'上調用會更有意義。 – Andreas
由於您正在迭代鍵和值,因此使用'entrySet()'而不是'keySet()'。 – Andreas