使用标签中给定名称的值填充字符串

时间:2019-04-17 16:56:38

标签: java spring-boot

我正在用Java工作,找不到有关用标签填充String的帮助,例如,我有以下字符串

Dear Mr {{person_name}}, Your current status is {{current_status}}.

我想在运行时像下面这样制作字符串

Dear Mr Pitter, Your current status is active.

我正在春季靴中工作。

1 个答案:

答案 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.");
    }
}