0

我有一个文件包含以下由“|”分隔的字符串行,

C:\Temp\demo\AAA.dat   |    C:\test\input\AAA.dat
C:\Temp\build\BBB.bat  |    C:\test\java\BBB.bat
C:\Temp\test\CCC.xml   |    C:\Apps\ftp\CCC.xml

在我阅读每一行之后,我希望提取以“|”分隔的每个字符串,即在我得到第一行之后,我需要同时获取 C:\Temp\demo\AAA.dat 和 C:\test\input\AAA .dat;请帮助如何使用蚂蚁来做到这一点???

我使用以下代码,我只能得到每一行:

<loadfile property="filelist" srcfile="C:\Temp\file1.txt"/>
<target name="test" depends="chkInput" description="test">

    <for param = "line" list="${filelist}" delimiter="${line.separator}"> 
       <sequential> 
            <echo>@{line}</echo> 
       </sequential> 
    </for> 
</target>

不是每个子字符串都用“|”分隔,请帮助如何让每个子字符串用“|”分隔?

4

1 回答 1

0

一旦你有了这条线,你就可以用它<propertyregex>来分开两块。

<for param = "line" list="${filelist}" delimiter="${line.separator}"> 
   <sequential> 
        <echo>@{line}</echo>
        <var name="first.part" unset="true"/>
        <var name="second.part" unset="true"/>
        <propertyregex
            property="first.part"
            input="@{line}"
            regex="^([^\s]*)"
            select="\1"/>
        <propertyregex
            property="second.part"
            input="@{line}"
            regex="\|\s*([^\s]*).*$"
            select="\1"/>
   </sequential> 
</for>

请注意,您必须使用<var/>任务来取消设置属性(否则,您不会更改属性,或者使用新任务来声明该属性是<sequential/>实体的本地属性。

于 2013-05-09T15:57:31.277 回答