用于拆分给定字符串的ant任务

jas*_*ass 1 ant

我需要从给定的URL拆分字符串并将其存储在属性中.

例如:url:projectname/qa/projectid/version属性需要存储:Name = projectname Mode = qa Id = projectid Version = version

Reb*_*bse 8

使用内置的javascript引擎(JDK> = 1.6.06)和ant脚本任务:

<project>

<property name="url" value="projectname/qa/projectid/version"/>

 <script language="javascript">
  arr = project.getProperty('url').split('/');
  project.setProperty('Name', arr[0]);
  project.setProperty('Mode', arr[1]);
  project.setProperty('Id', arr[2]);
  project.setProperty('Version', arr[3]);
 </script>

 <echo>
  $${Name}    => ${Name}
  $${Mode}    => ${Mode}
  $${Id}      => ${Id}
  $${Version} => ${Version}
 </echo>

</project>
Run Code Online (Sandbox Code Playgroud)

输出:

[echo]   ${Name}    => projectname
[echo]   ${Mode}    => qa
[echo]   ${Id}      => projectid
[echo]   ${Version} => version
Run Code Online (Sandbox Code Playgroud)

将其包装在macrodefscriptdef中以供重用(相当于编写新的ant任务).

如果您更喜欢使用一些ant插件而不是ant脚本任务,请参阅Ant Flaka,它有多种字符串操作的可能性,请参阅手册示例.

- 编辑 -
拆分与regexp,fe:

<project>
<property name="url" value="Chico.Harpo.Groucho.Gummo.Zeppo"/>

 <script language="javascript">
 <![CDATA[

  // won't work because special meaning of '.' as wildcard
  // arr = project.getProperty('url').split('.');
  // so either use
  // masking as character class '[.]' or '\\.'
  arr = project.getProperty('url').split('[.]'); 
   for (i=0; i < arr.length; i++)
   {
     print(arr[i]);
   }
 ]]>
 </script>

</project>
Run Code Online (Sandbox Code Playgroud)