Заполните строку значениями из имен, указанных в тегах - PullRequest
0 голосов
/ 17 апреля 2019

Я работаю в Java, я не могу найти помощь по заполнению строки тегами, например, у меня есть следующая строка

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

Я хочу создать строку во время выполнения, как показано ниже

Dear Mr Pitter, Your current status is active.

Я работаю в весенней загрузке.

1 Ответ

0 голосов
/ 17 апреля 2019

Вот рабочий пример использования 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.");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...