Моя программа, как показано ниже,Как сохранить. точка в ява регулярных выражений
/**
* @param args
*/
public static void main(String[] args) {
RegularExpressions r = new RegularExpressions();
// TODO Auto-generated method stub
String []input = {" Dear [name],\n",
"\n",
"Thanks for buying the [num] [item].\n",
"We appreciate your patronage\n",
"\n",
"Best, [sales_person]\n"};
HashMap<String, String> dic = new HashMap<String, String>();
dic.put("name", "Anna Bell Smith");
dic.put("num", "eight");
dic.put("item", "Boxes of Soap.");
dic.put("sales_person", "Karmine Smithe");
String []afterChange = r.replace(input, dic);
r.display(afterChange);
}
String [] replace(String []strings, Map<String, String> dict){
String patternStr = ".(";
for(String key:dict.keySet()){
patternStr = patternStr + key + "|";
}
patternStr = patternStr.substring(0, patternStr.length()-1);
patternStr = patternStr+").";
Pattern pattern = Pattern.compile(patternStr);
for(int i=0;i<strings.length;i++){
StringBuffer sb = new StringBuffer();
Matcher matcher = pattern.matcher(strings[i]);
boolean isMatcherFind = false;
while(matcher.find()){
matcher.appendReplacement(sb, dict.get(matcher.group(1)));
isMatcherFind = true;
}
if(isMatcherFind){
strings[i] = sb.toString();
}else{
strings[i] = strings[i];
}
}
return strings;
}
void display(String []str){
for(String s:str){
System.out.println(s);
}
}
}
выше программа дает выход как
Dear Anna Bell Smith
Thanks for buying the eight Boxes of SoapWe appreciate your patronage
Best, Karmine Smithe
В то время как я ожидал выход в
Dear Anna Bell Smith
Thanks for buying the eight Boxes of Soap.
We appreciate your patronage
Best, Karmine Smithe.
Значение, dot(.) and "\n"
следует сохранить вместо того, чтобы заменить его пустым пространством. Я версия java 8, дайте мне знать, как я могу сохранить dot(.) and "\n"
Вы действительно должны рассмотреть существующий механизм шаблонов, такой как FreeMarker. Эта проблема уже решена, и нет причин изобретать колесо. –
Я считаю, что вы имели в виду * Wheel @JimGarrison – Spencer4134
Как Джим сказал: используйте шаблонный двигатель. Это имеет дополнительное преимущество, что вы можете сохранить текст вне своего кода, что облегчит для любого не разработчика изменение текста, если это необходимо. – Marged