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

如何在ANT属性中获取字符串的子字符串,ant,Ant,我需要从属性中的字符串中获取子字符串 示例字符串: 1=tibunit-1.4.2.projlib\= 我想在.projlib\=之前和第一个=之后提取零件 结果应该是: tibunit-1.4.2 有什么想法吗?使用内置javascript引擎(JDK>=1.6.0_06)和类似的东西: 如果需要子字符串“tibunit-1.4.2.projlib\”: <project> <property name="foo" value="1=tibunit-1.4.2.pro

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

示例字符串:

1=tibunit-1.4.2.projlib\=
我想在
.projlib\=
之前和第一个
=
之后提取零件

结果应该是:

tibunit-1.4.2
有什么想法吗?

使用内置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>
如果需要子字符串“TIBUNT-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>
为了重用,请将这些内容放入一个。

与内置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>
如果需要子字符串“TIBUNT-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>
要重复使用,请将这些内容放入一个文件夹。

使用ant contrib任务:


使用ant contrib任务:



请澄清您的问题。您的结果包含
.projectlib\=
,但您的问题表明您希望在该部分之前完成。对不起,我的问题是错的。。我的输出应该是“TIBUNT-1.4.2”,请澄清您的问题。您的结果包含
.projectlib\=
,但您的问题表明您希望在该部分之前完成。对不起,我的问题是错的。。我的输出应该是“tibunit-1.4.2”
javax.script.ScriptException:ReferenceError:“println”在jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptException(NashornScriptEngine.java:467)jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:451)的第4行中没有定义在jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:403)在jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:399)
以下代码适用于
println
javax.script.ScriptException:ReferenceError:
中,以下代码适用于
println
<propertyregex property="tibunit.version"
               input="1=tibunit-1.4.2.projlib\="
               regexp="1=(tibnunit-[0-9]+.[0-9]+.[0-9]+).+"
               select="\1"
               casesensitive="false" />