0

我正确地将 xml 文件上传到字符串变量

我的 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"

如何使用正则表达式解决它?

4

2 回答 2

2

只需使用 String.Replace() 而不是 Regex.Replace()...

于 2013-01-22T02:29:52.047 回答
0

. 是正则表达式中的元字符。这意味着您需要通过在其前面加上反斜杠来逃避它,以便正则表达式查找文字 . 而不是元字符。这意味着“任何角色之一”。

所以你想做\。但请稍等——根据您制作正则表达式的内容,反斜杠可能被认为很重要,甚至在它到达正则表达式解析引擎之前就被转义了。您可能需要 \\. (所以 \\ 变成了 \ 其中 . 变成了 . 文字)

在此处阅读正则表达式中的所有元字符:http ://www.regular-expressions.info/reference.html

编辑:为了证明我的观点 - 我不得不编辑这篇文章并将我所有的反斜杠加倍,这样你就会看到正确的数量:)

于 2013-01-22T02:30:17.770 回答