Вот рабочий пример использования org.antlr.stringtemplate.StringTemplate
, так как вы упомянули, что пытались сделать это самостоятельно. Он работает, заменяя каждый экземпляр {{
и }}
на $
package com.demo.template;
import org.antlr.stringtemplate.StringTemplate;
import org.antlr.stringtemplate.language.DefaultTemplateLexer;
public class StringTemplatePoc {
public String stringsForTags(String personName, String currentStatus) {
StringTemplate stringForTags =
new StringTemplate(
"Dear Mr {{person_name}}, Your current status is {{current_status}}."
.replaceAll("(\\{\\{|}})", "\\$"),
DefaultTemplateLexer.class);
stringForTags.setAttribute("person_name", personName);
stringForTags.setAttribute("current_status", currentStatus);
return stringForTags.toString();
}
}
И успешно выполненный тест
package com.demo.template;
import org.junit.Test;
import static org.assertj.core.api.Assertions.assertThat;
public class StringTemplatePocTest {
private final StringTemplatePoc poc = new StringTemplatePoc();
@Test
public void stringsForTagsShouldReplacePersonNameAndStatus() {
assertThat(poc.stringsForTags("Pitter", "active"))
.isEqualTo("Dear Mr Pitter, Your current status is active.");
}
}