VB / C#搜索并替换为数字添加?

时间:2016-04-26 13:41:20

标签: c# vb.net search replace numbers

我发现了这个问题,是的,它适用于我的N ++ ...但我感觉不够快,我需要从我的应用程序复制到N ++,然后再回到我的应用程序。 示例:

<DatasetUnit x="2" y="0" ID="18" />
<DatasetUnit x="4" y="0" ID="5" />
<DatasetUnit x="3" y="0" ID="10" />
<DatasetUnit x="5" y="0" ID="30" />
<DatasetUnit x="1" y="0" ID="33" />
<DatasetUnit x="10" y="0" ID="1" />

我希望X值增加45。应该是:

<DatasetUnit x="47" y="0" ID="18" />
<DatasetUnit x="49" y="0" ID="5" />
<DatasetUnit x="48" y="0" ID="10" />
<DatasetUnit x="50" y="0" ID="30" />
<DatasetUnit x="46" y="0" ID="33" />
<DatasetUnit x="55" y="0" ID="1" />

这可以在C#/ VB上完成吗?但我更喜欢VB,因为我的应用程序是用VB编写的。顺便说一句,我发现this,看起来像是在N ++上类似python,但我不知道如何使用它; _;

编辑:我不希望每个元素都增加,但只有我选择的文本(我可以从textbox1.selectedtext获得)

1 个答案:

答案 0 :(得分:2)

作为XML,您应该将其解析为XML,例如

var doc = XDocument.Load(@"c:\x.xml");

foreach (var el in doc.Descendants("DatasetUnit"))
{
    var x = el.Attribute("x");
    x.Value = (int.Parse(x.Value) + 45).ToString();
}

doc.Save(@"c:\x2.xml");

根据您的意见,您不需要简单的流/作者:

Dim doc = XDocument.Parse(TextBox1.Text)
For Each el In doc.Descendants("DatasetUnit")
Dim x = el.Attribute("x")
    x.Value = (Integer.Parse(x.Value) + 45).ToString()
Next
TextBox1.Text = doc.ToString

(您的代码可能会失败,因为您没有重置xmlStream.Position = 0

相关问题