【问题标题】:Using chunk template engine in android with custom tags在带有自定义标签的android中使用块模板引擎
【发布时间】:2014-08-05 22:52:42
【问题描述】:

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

假设,

以下是标签。

标签: {"world":"WORLD", "c": "Dennis Ritchie", "apple":"JOBS" }

输入: HELLO {{ world }},C 是 {{ c }} 写的,java 是 {{ java }} 写的,你好。

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

总之

  1. 我需要一个自定义分隔符,例如 {{ string }} 即

    DEFAULT_TAG_START = "{{";

    DEFAULT_TAG_END ="}}";

  2. 如果输入包含未指定的标签,则应将其替换为空。

我尝试并坚持跟随,

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();
}

【问题讨论】:

    标签: java android template-engine chunk-templates


    【解决方案1】:

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

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

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

    HELLO {$world:}, C is written by {$c:}, while java is written by {$java:}, hola.
    

    如果您的模板语法不灵活(例如,您有一个预先存在的模板库,或者您真的不喜欢本机标记语法),您可以添加一个预处理步骤将{{ this }} 转换为{$this:}在将其附加到 Chunk 模板之前。

    Chunk 库甚至提供了一个方便的函数来为您执行此操作(尽管如果输入与空格不一致,您可能需要重新实现它)。

    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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-15
      • 2015-01-20
      • 2017-02-16
      相关资源
      最近更新 更多