2013-01-22 96 views
0

我上傳了一個XML文件給一個字符串變量的字符串,正確如何更改文件名使用正則表達式C#

我的XML文件的形式

<Asset>01.xmf</Asset> 
<Index>0</Index> 
</Mesh> 
</BodyPart0> 
<BodyPart1> 
<BodyPartId>1</BodyPartId> 
<Material> 
<TextureMap0> 
<Asset>chkn_xrf_bd7580097080fe4f10fbf857ed5c27b8.xrf</Asset> 
<Index>-1</Index> 
</TextureMap0> 
</Material> 
<Mesh> 
<Asset>02.xmf</Asset> 
<Index>1</Index> 
</Mesh> 
</BodyPart1> 
<BodyPart10> 
<BodyPartId>10</BodyPartId> 
<Material> 
<TextureMap0> 
<Asset>chkn_xrf_3b5aa82b4c3e67599e4091f0fcefa2a8.xrf</Asset> 
<Index>-1</Index> 
</TextureMap0> 
</Material> 
<Mesh> 
<Asset>11.xmf</Asset> 

我要替換的所有文件延期。 XMF已經由另一個名稱定義。

例如01.xmfnewNAME.xmf

但是當我運行下面的代碼,結果是不相符的,我認爲這是因爲文件名(01.xmf包含特殊字符「。」。 (點)

stringINDEX string = GetXmlString (indexXML);//Load xml file in stringINDEX 

string pattern = lbString1;// lbString1 = "01.xmf" 
Rgx = new Regex Regex (pattern); 

stringINDEX = rgx.Replace (stringINDEX, lbString2);//lbString2 = "newNAME.xmf" 

使用正則表達式是如何解決的?

回答

2

只要使用與string.replace()代替Regex.Replace()...

+0

.. so很多人被RegEx過度炒作,當這是一個簡單的查找替換.. –

+0

我嘗試了第一次常見的方式。 stringINDEX = stringINDEX.Replace(lbString1,lbString2); 但由於不工作,這是特殊字符「。」。 (點)帶來問題。 但不是如何與正則表達式,請任何幫助嗎? –

0

。是正則表達式中的元字符。這意味着你需要通過在它之前加一個反斜槓來讓它逃避,讓正則表達式去尋找一個文字。而不是元字符。這意味着'任何角色之一'。

所以你想要做\。但等待 - 取決於你在製作正則表達式時,反斜槓可能被認爲是重要的,並在它到達正則表達式分析引擎之前被轉義。您可能需要\\。 (所以\\變成\與變成文字。)

閱讀所有在這裏的正則表達式元字符:http://www.regular-expressions.info/reference.html

編輯:爲了證明我的觀點 - 我不得不編輯這篇文章,把所有我的反斜槓加倍,這樣你會看到正確的數額:)