我正在用Java工作,找不到有关用标签填充String的帮助,例如,我有以下字符串
Dear Mr {{person_name}}, Your current status is {{current_status}}.
我想在运行时像下面这样制作字符串
Dear Mr Pitter, Your current status is active.
我正在春季靴中工作。
答案 0 :(得分:0)
这是使用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.");
}
}