用新字符串替换找到的字符串?

时间:2013-11-10 12:26:24

标签: c# xml regex

我有一个打开XML文件的打开文件对话框。正则表达式查找><之间的每个字符串,并将新行中的每个字符串写入富文本框。

private void button1_Click(object sender, EventArgs e)
{
    if (openFileDialog1.ShowDialog() == DialogResult.OK)
    {
        StreamReader sr = new StreamReader(openFileDialog1.FileName);
        string s = sr.ReadToEnd();
        richTextBox1.Text = s;
    }

    string txt = richTextBox1.Text;
    var foundWords = Regex.Matches(txt, @"(?<=>)([\w ]+?)(?=<)");
    richTextBox1.Text = string.Join("\n", foundWords.Cast<Match>().Select(x => x.Value).ToArray());
}

然后我可以改变那些字符串。但是,如何将这些更改的字符串导回到同一位置的原始XML文件?

1 个答案:

答案 0 :(得分:3)

您可以尝试在文件中替换这些字符串,但是一旦替换了不同长度的字符串,就可以更简单地编写整个文件。

用户似乎可以修改这些字符串 - 这就是您的挑战:您必须跟踪原始文件中的哪个单词将其替换回数据。此外,用户可以删除或添加文本框中的行,在这种情况下您的应用程序会做什么?

使用XDocument处理xml文件会更容易,并存储包含原始值的XElementXDocument允许您替换这些值并存储文件。

请注意,由于您没有明确关闭StreamReader,因此当您尝试编写该文件时,该文件可能仍在使用中。只需将StreamReader放在using块中即可阻止此操作。

相关问题