Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 如何从ANT中的:分隔字符串中提取第一个元素_String_Ant - Fatal编程技术网

String 如何从ANT中的:分隔字符串中提取第一个元素

String 如何从ANT中的:分隔字符串中提取第一个元素,string,ant,String,Ant,我需要从字符串/src:./.apt_generated:中提取由“:”分隔的令牌,并将各个令牌作为列表元素获取。我试着在下面的示例中使用这个概念(尝试了使用dirsep、filesep等的一些变体)。这些都不起作用。如何从ANT中给定的字符串中获得所需的列表?我不能使用ant contib或任何其他ant库。我只需要使用核心蚂蚁 <pathconvert property="dir.1" > <path path="${srcdir.list}"/&g

我需要从字符串
/src:./.apt_generated:
中提取由“:”分隔的令牌,并将各个令牌作为列表元素获取。我试着在下面的示例中使用这个概念(尝试了使用dirsep、filesep等的一些变体)。这些都不起作用。如何从ANT中给定的字符串中获得所需的列表?我不能使用ant contib或任何其他ant库。我只需要使用核心蚂蚁

    <pathconvert property="dir.1" >
        <path path="${srcdir.list}"/>
        <chainedmapper>
            <flattenmapper/>
            <mapper type="regexp" from="(.*?):.*" to="\1"/>
        </chainedmapper>
    </pathconvert>

    <echo>dir.1 is ${dir.1}</echo>

dir.1是${dir.1}

您可以使用脚本任务

<project name="proj">
  <property name="dir.list" value="./src:./.apt_generated:"/>

    <script language="javascript"> <![CDATA[
       var values = proj.getProperty("dir.list").split(":");
       proj.setProperty("dir.1", values[0]);
       proj.setProperty("dir.2", values[1]);
    ]]></script>

    <echo message="${dir.1}" />
    <echo message="${dir.2}" />
</project>

编辑。我不能确切地说出为什么制图器不工作。我认为它不仅仅是一个简单的正则表达式替换,它还有一些路径处理的逻辑

试试下面的方法

<project name="proj">
   <pathconvert property="dir.1" >
     <path path="./src:./.apt_generated:"/>
      <chainedmapper>
         <flattenmapper/>
         <identitymapper/>
      </chainedmapper>
    </pathconvert>

   <echo>dir.1 is ${dir.1}</echo>
</project>

dir.1是${dir.1}

您可以看到,即使它是identity mapper,它也会从字符串中删除一些字符。

只是为了更好地学习ANT,您能告诉我为什么上面的操作不起作用吗?这正是我在问题中使用的链接的逻辑?