蚂蚁分裂和修剪?

时间:2014-10-06 10:51:07

标签: regex ant

诚实。 ANT对我来说是新的。

我有一个字符串。

我需要使用这个字符串,比如说(A; B; C;),作为

一个 乙 ç

但我还需要遍历这些值并将它们传递给另一个蚂蚁目标!

循环A 然后是B,最后是C

string中的值的数量也是随机的。 我搜索了网络,发现很容易用ant-contrib。

但像往常一样,由于某些其他人的原因,我不能使用ant-contrib。

任何帮助将不胜感激

由于

2 个答案:

答案 0 :(得分:2)

script task与内置的javascript引擎一起使用(自Java 1.6.06起包含,因此不需要额外的库或蚂蚁插件) 并完全访问ant api。这是一个非常简单的片段:

<project>

 <property name="foo" value="A;B;C"/>

 <script language="javascript">
  <![CDATA[
  // a simple String replace action
  var clean = project.getProperty('foo').replace(';', ' ');
  println(clean);

  // create a property for further processing in the buildscript
  project.setProperty('foobar', project.getProperty('foo').replace(';', ' '));

  // for loop
  var items = project.getProperty('foo').split(';');
  for (var i = 0; i < items.length; i++) {
   println(items[i]);
  }
  ]]>
 </script>

 <echo> $${foobar} => ${foobar}</echo>

</project>

输出:

[script] A B C
[script] A
[script] B
[script] C
[echo]  ${foobar} => A B C

要重新使用,请将您的脚本包装在macrodef

- 评论后编辑 -
可以通过编程方式调用ant任务,某些示例使用echo task

<project>

 <property name="foo" value="A;B;C"/>

 <script language="javascript">
  <![CDATA[
  // for loop
  var items = project.getProperty('foo').split(';');
  for (var i = 0; i < items.length; i++) {
    print = project.createTask("echo");
    print.addText(items[i]);
    print.execute();
  }
  ]]>
 </script>

</project>

输出:

[echo] A
[echo] B
[echo] C

答案 1 :(得分:0)

您可以使用antcontrib:

 <antcontrib:propertyregex property="trimmedprop"
     input="${untrimmedprop}"
     defaultValue="${untrimmedprop}"
     regexp="\s"
     replace=""
     global="true" />

对于分裂,我猜你要使用“for”循环,你也可以用antcontrib做到这一点:

 <property name="letters" value="a,b,c,d,e"/>

 <antcontrib:for list="${letters}" param="letter">
  <echo>Letter ${letter}</echo>
 </antcontrib:for>

要在项目中获得反对意见:

 <project default="test" xmlns:antcontrib="antlib:net.sf.antcontrib">
    <typedef resource="net/sf/antcontrib/antlib.xml" uri="antlib:net.sf.antcontrib" classpath="/local/path/to/ant-contrib-1.0b3.jar" />