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.xmfからnewNAME.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

Regex.Replace() の代わりに String.Replace() を使用してください...

于 2013-01-22T02:29:52.047 に答える
0

. 正規表現のメタ文字です。つまり、正規表現がリテラルを探すには、バックスラッシュを前に置いてエスケープする必要があります。メタ文字ではなく。これは「任意の文字の 1 つ」を意味します。

だからあなたは\をしたいです。しかし、待ってください-正規表現を作成する内容によっては、バックスラッシュが重要と見なされ、正規表現解析エンジンに到達する前にエスケープされる場合があります。\\ が必要な場合があります。(したがって、\\ は \ に変換され、. は . リテラルに変換されます)

ここで正規表現のすべてのメタ文字について読んでください: http://www.regular-expressions.info/reference.html

編集:私の主張を証明するために、この投稿を編集し、すべてのバックスラッシュを2倍にして、正しい量が表示されるようにする必要がありました:)

于 2013-01-22T02:30:17.770 に答える