【问题标题】:How to change file names in a string using Regex c#如何使用正则表达式 c# 更改字符串中的文件名
【发布时间】:2013-01-22 02:23:37
【问题描述】:

我上传了一个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"

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

【问题讨论】:

    标签: c# xml regex string replace


    【解决方案1】:

    只需使用 String.Replace() 代替 Regex.Replace()...

    【讨论】:

    • 我第一次尝试常用的方法。 stringINDEX = stringINDEX.Replace (lbString1, lbString2);但作为不工作,这是特殊字符“。” (点)带来问题。但不是如何用正则表达式来做,有什么帮助吗?
    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      • 2019-10-16
      相关资源
      最近更新 更多