如何在ANT属性中获取字符串的子字符串

时间:2015-06-25 10:55:00

标签: ant

我需要从属性中的字符串中获取子字符串。

示例字符串:

1=tibunit-1.4.2.projlib\=

我想在.projlib\=之前和第一个=之后提取部分。

结果应为:

tibunit-1.4.2

有什么想法吗?

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" />