我需要比较StringTemplate中的属性值

时间:2015-08-06 14:39:40

标签: stringtemplate stringtemplate-4

我有一个元组列表,我需要从:

发出一个类似C的布尔表达式
ranges = [('a','z'),('0','9'),('_','_')]

我的模板:

"$ranges:{'$it.0$'<=c&&c<='$it.1$'}; separator='||'$"

此输出:

'a'<=c&&c<='z'||'0'<=c&&c<='9'||'_'<=c&&c<='_'

我想检查$it.0$是否与$it.1$相同,并在这种情况下输出c==='$it.0$'(在我的示例中,这将为最后一个元组生成c==='_' 。这可能吗?

1 个答案:

答案 0 :(得分:0)

您无法在模板中进行任何计算(请参阅Stringtemplate compare strings does not work)。

解决这个问题的一种可能方法是使用自定义Range类,并将功能存储在其中。然后,您可以在范围对象上调用一个方法,该方法返回fromto值是否相等。

$ranges:{ range | $if(range.fromToEqual)$c === '$range.from$'$else$'$range.from$' <= c && c <= '$range.to$'$endif$}; separator=" || "$

其中Range类中的方法如下:

public boolean getFromToEqual() { // note the 'get' prefix
    return from == to;
}

输出:

'a' <= c && c <= 'b'||'1' <= c && c <= '9'|| c === '_'