我需要比较 StringTemplate 中的 属性 值
I need to compare property values in StringTemplate
我有一个元组列表,我需要从中发出类似 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==='_'
元组)。这可能吗?
您不能在模板中进行任何计算(请参阅 Stringtemplate compare strings does not work)。
解决此问题的一种可能方法是使用自定义范围 class,并将功能存储在其中。然后,您可以在返回 from
和 to
值是否相等的范围对象上调用一个方法。
$ranges:{ range | $if(range.fromToEqual)$c === '$range.from$'$else$'$range.from$' <= c && c <= '$range.to$'$endif$}; separator=" || "$
其中范围class中的方法如下:
public boolean getFromToEqual() { // note the 'get' prefix
return from == to;
}
输出:
'a' <= c && c <= 'b'||'1' <= c && c <= '9'|| c === '_'
我有一个元组列表,我需要从中发出类似 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==='_'
元组)。这可能吗?
您不能在模板中进行任何计算(请参阅 Stringtemplate compare strings does not work)。
解决此问题的一种可能方法是使用自定义范围 class,并将功能存储在其中。然后,您可以在返回 from
和 to
值是否相等的范围对象上调用一个方法。
$ranges:{ range | $if(range.fromToEqual)$c === '$range.from$'$else$'$range.from$' <= c && c <= '$range.to$'$endif$}; separator=" || "$
其中范围class中的方法如下:
public boolean getFromToEqual() { // note the 'get' prefix
return from == to;
}
输出:
'a' <= c && c <= 'b'||'1' <= c && c <= '9'|| c === '_'