2013-05-09 132 views
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> 

不是每個子由「|」分隔,請幫助如何獲得通過分隔每個子「|」?

回答

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/>實體。

+0

非常感謝大衛, – dateboyTom 2013-05-09 16:10:32