gpt4 book ai didi

c# - 在格式化为 XML (C#) 的字符串中更新 "IDs"的快速和肮脏的方法

转载 作者:行者123 更新时间:2023-11-30 21:26:12 25 4
gpt4 key购买 nike

对于一次性操作,我需要解析 XML 字符串的内容并更改“ID”字段的数字。但是,我不能冒险更改字符串的任何其他内容,例如。空格、换行符等必须保持原样!

由于我的经验是 XmlReader 往往会弄乱空白,甚至可能会重新格式化您的 XML,所以我不想使用它(但请随时说服我)。这也为 RegEx 尖叫,但是......我不擅长 RegEx,尤其是 .NET 实现。

这里是字符串的一小部分,ID字段的数字在某些情况下需要更新。字符串中可以有很多这样的 VAR 条目。所以我需要将每个 ID 转换为 Int32,比较并修改它,然后将其放回字符串中。

<VAR NAME="sf_name" ID="1001210">

我正在寻找最简单(就编码时间而言)和最安全的方法来执行此操作。

最佳答案

您正在寻找的正则表达式模式是:

ID="(\d+)"

匹配组 1 将包含数字。使用 MatchEvaluator Delegate用动态计算的替换替换匹配项。

Regex r = new Regex("ID=\"(\\d+)\"");
string outputXml = r.Replace(inputXml, new MatchEvaluator(ReplaceFunction));

ReplaceFunction 是这样的:

public string ReplaceFunction(Match m)
{
// do stuff with m.Groups(1);
return result.ToString();
}

如果您需要,我可以扩展 Regex 以进行更具体的匹配。当前所有 ID 值(仅包含数字)都被替换。您还可以将那部分“额外智能”构建到匹配评估器函数中,如果您不想更改匹配,则让它返回未更改的匹配。

关于c# - 在格式化为 XML (C#) 的字符串中更新 "IDs"的快速和肮脏的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/258694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com