如何在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" />