如何跳过带有小胡子的空字符串

问题描述 投票:0回答:1

我想要这样的文字

如果罗密欧包含文本。

  • 阿尔法
  • 罗密欧
  • //空行
  • //空行
  • 朱莉娅

如果 Romeo 为 Null 或 Empty

  • 阿尔法
  • 朱莉娅

我的胡子看起来像

 {{alpha}}
 {{#romeo}}{{romeo}}\n\n{{/romeo}}
 {{julia}}

本作品适用于罗密欧为空的情况。但当 romeo 是空字符串时则不然。是否可以在不更改后端输入的情况下解决这个问题

if(romeo.isEmpty()){
  romeo=null;
java mustache jstachio
1个回答
0
投票

在不配置“错误”的情况下执行此操作的最佳方法是使用 Mustache 的点断链功能,这在所有 Mustache 实现中均不可用。

我将使用 JStachio 来演示这个,但这应该在 JMustache 中也能工作,但可能不适用于 Mustache.java,因为它没有一致的空白处理:

@JStache(template = """
        {{alpha}}
        {{^romeo.empty}}
        {{#romeo}}
        {{romeo}}


        {{/romeo}}
        {{/romeo.empty}}
        {{julia}}
        """)
public record SkipEmptyStrings(String alpha, String romeo, String julia) {
}

请注意,由于反向路径规则,我们仍然必须检查罗密欧是否存在。即使 romeo 为空,反向路径也会成功。

    @Test
    public void testRomeo() {
        SkipEmptyStrings e = new SkipEmptyStrings("Alpha", "Romeo", "Julia");
        String actual = JStachio.render(e);
        String expected = """
                Alpha
                Romeo


                Julia
                """;
        assertEquals(expected, actual);
    }
    
    @Test
    public void testRomeoNull() {
        SkipEmptyStrings e = new SkipEmptyStrings("Alpha", null, "Julia");
        String actual = JStachio.render(e);
        String expected = """
                Alpha
                Julia
                """;
        assertEquals(expected, actual);
    }

    @Test
    public void testRomeoEmpty() {
        SkipEmptyStrings e = new SkipEmptyStrings("Alpha", "", "Julia");
        String actual = JStachio.render(e);
        String expected = """
                Alpha
                Julia
                """;
        assertEquals(expected, actual);
    }
© www.soinside.com 2019 - 2024. All rights reserved.