java 如何跳过空字符串与胡子

hjzp0vay  于 2023-05-12  发布在  Java
关注(0)|答案(1)|浏览(157)

我想要一条短信
如果罗密欧包含文本。

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

如果罗密欧为Null或Empty

  • 阿尔法
  • 朱莉亚

我的...胡子看起来像

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

这个工作是为了罗密欧是空的情况。但当罗密欧是一个空字符串时就不是了。有没有可能在不改变后端输入的情况下解决这个问题

if(romeo.isEmpty()){
  romeo=null;
c90pui9n

c90pui9n1#

要做到这一点,而不配置“falsey”(在所有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) {
}

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

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

相关问题