我有一个文件包含由“|”,
分隔的以下字符串行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; 请帮助如何使用ant来做到这一点???
我使用以下代码,我只能得到每一行:
<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>
不是每个子串用“|”分隔,请帮助如何将每个子串用“|”分隔?
答案 0 :(得分: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/>
实体。