Java 在android中使用具有自定义标记的区块模板引擎

Java 在android中使用具有自定义标记的区块模板引擎,java,android,template-engine,chunk-templates,Java,Android,Template Engine,Chunk Templates,我正在尝试在android中使用chunk。我需要这样的东西: 假设 以下是标签 标签:{“世界”:“世界”,“c”:“丹尼斯·里奇”,“苹果”:“乔布斯”} Input:HELLO{{world},C是由{{C}编写的,而java是由{java}编写的,hola 输出:HELLO WORLD,C是由Dennis Ritchie编写的,而java是由hola编写的。 总之 我需要一个像{{string}这样的自定义分隔符 i、 e 默认_标记_开始=“{{” 默认_标记_END=“}}” 而如果

我正在尝试在android中使用chunk。我需要这样的东西:

假设

以下是标签

标签:{“世界”:“世界”,“c”:“丹尼斯·里奇”,“苹果”:“乔布斯”}

Input:HELLO{{world},C是由{{C}编写的,而java是由{java}编写的,hola

输出:HELLO WORLD,C是由Dennis Ritchie编写的,而java是由hola编写的。

总之

  • 我需要一个像{{string}这样的自定义分隔符 i、 e

    默认_标记_开始=“{{”

    默认_标记_END=“}}”

  • 而如果输入包含未指定的标记,则应将其替换为空

  • 我尝试并坚持跟随

    public String process(String msg) {
    
       Chunk c = new Chunk();               
       c.append(msg);
       c.set("apple", "JOBS");
       c.set("c", "Dennis Ritchie");
       c.set("world", "WORLD");
       return c.toString();
    }
    

    区块模板引擎目前不支持备用标记语法。此外,标记标记中的空白不会被忽略/丢弃

    然而,这里有一个可能的桥接解决方案。只要标记名后面跟一个冒号,未提供的块标记将默认为空

    因此,您的输入必须更改为有效的区块语法:

    HELLO {$world:}, C is written by {$c:}, while java is written by {$java:}, hola.
    
    如果您的模板语法不灵活(例如,您有一个预先存在的模板库,或者您真的不喜欢本机标记语法),您可以添加一个预处理步骤,在将
    {{this}}
    附加到块模板之前,将其转换为
    {$this:}

    区块库甚至提供了一个方便的函数,可以为您实现这一点(尽管如果输入与空白不一致,您可能需要重新实现它)

    import com.x5.template.TemplateSet;
    
    ...
    
    Chunk c = new Chunk();
    
    String template = TemplateSet.convertTags(msg, "{{ ", " }}", "{$", ":}");
    c.append(template);
    
    c.set("apple", "JOBS");
    c.set("c", "Dennis Ritchie");
    c.set("world", "WORLD");
    return c.toString();