2013-12-20 109 views
1

可以說我在物業中得到了這個AB_1.2.3.112211替換屬性中的一個標誌

我想要的是交換第一個「。」到「_」

,使其成爲AB_1_2.3.112211 的兩個第一字符可能會更長FX ABCD_1.2.3.112211,但它仍然應該輸出ABCD_1_2.3.112211

有沒有辦法做到這一點在MSBuild任務?

回答

4

如果輸入字符串始終如您所示,即第一個「。」更換自帶下劃線後跟一個號碼後,您可以使用一個property function,並使用C#的靜態Regex.Replace方法:

<Target Name="Repl"> 
    <PropertyGroup> 
    <Prop>ABCD_1.2.3.112211</Prop> 
    </PropertyGroup> 
    <Message Text="$([System.Text.RegularExpressions.Regex]::Replace($(Prop), '_(\d*)\.', '_$1_'))" /> 
</Target> 

如果用例是比較複雜的還有其他選擇:

  • 使用另一個正則表達式在
  • 以上代碼
  • MSBuild社區任務有a Regex task它支持Regex.Replace的Count參數,所以你可以使用一個簡單的正則表達式來替換「。」。與「_」,並設置計數一個只做一審
  • 使用在你寫你的首選實現的inline task更換一審from the answers here
+2

良好的信息,但沒有任何與C#。 'Regex.Replace'是.NET的[Base Class Library](http://en.wikipedia.org/wiki/Base_Class_Library)中的一種方法;語法是所有的「MSBuild語言」。 BCL文檔顯示了各種語言的使用語法,但不幸的是,對於MSBuild而言則不是。 「屬性函數」中提供的鏈接確實給出了一般的MSBuild語法。 –