Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于文本模板的简单java库?_Java_Templates_Text - Fatal编程技术网

用于文本模板的简单java库?

用于文本模板的简单java库?,java,templates,text,Java,Templates,Text,我需要模板一些电子邮件文本。没什么特别的,只是用真正的值替换像@name@这样的东西。没有图片,没有花哨的格式等等 您可以推荐什么java库?越简单越好。你试过了吗?你可以试一下。我在电子邮件模板引擎中使用了这两种方法。它们为基本用例提供了简单的语法,但以后可能会变得相当复杂 在这两者中,我个人更喜欢Freemarker,因为他们在提供各种不同的内置程序方面做得非常好,使数字和文本的格式变得非常简单。试试ApacheVelocity或Freemarker,它们会很有帮助,对我来说,我正在使用Fr

我需要模板一些电子邮件文本。没什么特别的,只是用真正的值替换像
@name@
这样的东西。没有图片,没有花哨的格式等等

您可以推荐什么java库?越简单越好。

你试过了吗?

你可以试一下。我在电子邮件模板引擎中使用了这两种方法。它们为基本用例提供了简单的语法,但以后可能会变得相当复杂


在这两者中,我个人更喜欢Freemarker,因为他们在提供各种不同的内置程序方面做得非常好,使数字和文本的格式变得非常简单。

试试ApacheVelocity或Freemarker,它们会很有帮助,对我来说,我正在使用Freemarker

同意,ApacheVelocity是嵌入式环境的一个很好的调用


如果您想要一个独立的产品,还可以使用Apache的Ant。它通过应用替换筛选器来减少复制任务中的模板。

已建议的库的无库替代方案:。

是另一个选项。给出了一些基本示例和语法

StringTemplate hello = new StringTemplate("Hello, $name$",
                                          DefaultTemplateLexer.class);
hello.setAttribute("name", "World");
System.out.println(hello.toString());

自己动手做非常简单:

public class Substitution {

  public static void main(String[] args) throws Exception {
    String a = "aaaa@bbb@ccc";

    // This can be easiliy FileReader or any Reader
    Reader sr = new StringReader(a);

    // This can be any Writer (ie FileWriter)
    Writer wr = new StringWriter();

    for (;;) {
      int c = sr.read();
      if (c == -1) { //EOF
        break;
      }
      if (c == '@') {
        String var = readVariable(sr);
        String val = getValue(var);
        wr.append(val);
      }
      else {
        wr.write(c);
      }
    }
  }

  /**
   * This finds the value from Map, or somewhere
   */
  private static String getValue(String var)  {
    return null;
  }

  private static String readVariable(Reader sr)throws Exception {
    StringBuilder nameSB = new StringBuilder();
    for (;;) {
      int c = sr.read();
      if (c == -1) {
        throw new IllegalStateException("premature EOF.");
      }
      if (c == '@') {
        break;
      }
      nameSB.append((char)c);
    }
    return nameSB.toString();
  }
}
你得把它擦亮一点,但仅此而已