$
으로 시작하는 String의 부분을 교체하려고합니다. (저는 수동으로 String의 매개 변수를 사용합니다), 어떤 이유로 그것이 실패합니다. 여기에 내가 가진 무엇 :String replace() 메서드의 문제
public void sendNotificationOfAcceptedMeeting(String candidateName, DateTime dateTime) {
Map<String,String> params = new HashMap<String,String>();
params.put("date", dateTime.toString(DATETIME_FORMAT));
params.put("candidate", candidateName);
sendEmailWithTemplate(TEMPLATE_ALL_ACCEPTED, params);
}
다음 : 마지막으로
private void sendEmailWithTemplate(String templateName, Map<String, String> params) {
EmailTemplate template = emailTemplateDao.getEmailTemplate(templateName);
String subject = applyTemplateParameters(template.getSubject(), params);
String body = applyTemplateParameters(template.getTetxBody(), params);
sendEmail(subject, body);
}
과 : 당신은 아마 생각으로
private String applyTemplateParameters(String templateText, Map<String, String> params) {
String toReturn = templateText;
if (params != null) {
System.out.println("map size: " + params.size());
for (Entry<String, String> entry : params.entrySet()) {
System.out.println("********************");
System.out.println(toReturn + " ***BEFORE");
toReturn.replace("$" + entry.getKey(), entry.getValue());
System.out.println("$" + entry.getKey() + " ***KEY");
System.out.println(entry.getValue() + " ***VALUE");
System.out.println(toReturn + " AFTER");
}
}
return toReturn;
}
, 두 번째 방법은 내가 수정할 문자열로 세 번째 방법을 호출 매개 변수와 그 값의 맵. 세 번째 방법 인쇄의 sysouts 그러나
The meeting request at $date with $candidate was accepted by all interviewers.
: 명확하게 매개 변수를 대체하지 않습니다 보여줍니다
map size: 2
********************
The meeting request at $date with $candidate was
accepted by all interviewers. ***BEFORE
$candidate ***KEY
Acceeedsasd Stetfghfghasd ***VALUE
The meeting request at $date with $candidate was
accepted by all interviewers. AFTER
********************
The meeting request at $date with $candidate was
accepted by all interviewers. ***BEFORE
$date ***KEY
27/12/2014 8:00 ***VALUE
The meeting request at $date with $candidate was
accepted by all interviewers. AFTER
... 나는 어쩌면 $
휴식 생각 두 번째 방법에 template
문자열의 vlue을 설정 그것 (정규식)하지만 replace()
, replaceAll()
과 달리 문자열 - 정규식이 아닙니다. 나는 아이디어가 없어, 어떤 도움을 주셔서 감사합니다.
문자열의 불변 ... 지금은 바보가 된 기분하지 마십시오, 불변 대체하지 못할 ..? 고맙습니다! – Lucas
:) .. Atleast 당신은 대답을 가지고 있습니다. –