我需要从ant属性中的字符串中获取子字符串。
示例字符串:
1=tibunit-1.4.2.projlib\=
我想在.projlib\=
之前和第一个=
之后提取部分。
结果应为:
tibunit-1.4.2
有什么想法吗?
答案 0 :(得分:2)
将script task与内置javascript引擎(JDK> = 1.6.0_06)一起使用,例如:
如果您需要子字符串'tibunit-1.4.2.projlib \':
<project>
<property name="foo" value="1=tibunit-1.4.2.projlib\="/>
<script language="javascript">
// simple echo
println(project.getProperty('foo').split('=')[1]);
// create property for later use
project.setProperty('foobar', project.getProperty('foo').split('=')[1]);
</script>
<echo>$${foobar} => ${foobar}</echo>
</project>
输出:
[script] tibunit-1.4.2.projlib\
[echo] ${foobar} => tibunit-1.4.2.projlib\
如果您需要子字符串'tibunit-1.4.2':
<project>
<property name="foo" value="1=tibunit-1.4.2.projlib\="/>
<script language="javascript">
s = project.getProperty('foo').split('=')[1];
// simple echo
println(s.substring(0, s.lastIndexOf(".")));
// create property for later use
project.setProperty('foobar', s.substring(0, s.lastIndexOf(".")));
</script>
<echo>$${foobar} => ${foobar}</echo>
</project>
输出:
[script] tibunit-1.4.2
[echo] ${foobar} => tibunit-1.4.2
为了重复使用,请将这些内容放入macrodef。
答案 1 :(得分:1)
使用ant-contrib任务PropertyRegex:
<propertyregex property="tibunit.version"
input="1=tibunit-1.4.2.projlib\="
regexp="1=(tibnunit-[0-9]+.[0-9]+.[0-9]+).+"
select="\1"
casesensitive="false" />