我需要通过长度f.e从属性值中提取子字符串。 :
<property name="prop1" value="nameBLABLABLA" />
我想得到值
name
是否可以不使用javascript代码?
答案 0 :(得分:2)
与vanilla ant不同,您需要添加一些Ant插件,例如
Antcontrib(2006年最新版本!)或Ant Flaka - 意味着您需要额外的jar /库。
使用jdk内置的Javascript引擎,它很简单:
<project>
<!-- create a macrodef for reuse -->
<macrodef name="getsubstring">
<attribute name="src"/>
<attribute name="from"/>
<attribute name="to"/>
<attribute name="result"/>
<sequential>
<script language="javascript">
project.setProperty(
"@{result}", "@{src}".substring(@{from},@{to})
);
</script>
</sequential>
</macrodef>
<property name="foo" value="nameBLABLABLA"/>
<getsubstring src="${foo}" from="0" to="4" result="foobar"/>
<echo> $${foobar} => ${foobar}</echo>
</project>
不需要额外的图书馆 创建了一个macrodef,它通常分别用于字符串的属性 JavaScript引擎了解Javascript和Java,您将获得对Ant api的完全访问权。
答案 1 :(得分:1)
我在Rebse的回答中使用JavaScript,但有一种方法可以在没有使用<loadresource>
和<tokenfilter>
的情况下执行此操作。这使用了开始/长度而不是from / to for substring:
/