在XML解析器中处理非标准引号的最佳方法

时间:2013-06-09 13:32:56

标签: c# regex xml-parsing quote

我正在创建一个用XML格式处理文本的程序。我发现当标记值是非ASCII引号(双引号/ ASCII 34,单引号/ ASCII 39)时,解析会抛出异常。这些引用可能来自编辑软件,如Ms Word(自动格式化)。

目前,我会解析文本框的每一行,并在处理XML之前替换引号。这是代码(在C#中)

int nLines = textBox1.Lines.Length;

for (int i = 0; i < nLines; i++)
{
    // get the current line and replace quotes with standard ones
    line = Regex.Replace(textBox1.Lines[i], "[\u2018|\u2019|\u201A]", "'");
    line = Regex.Replace(line, "[\u201C|\u201D|\u201E]", "\"");

我想知道是否有更好/更正确/更快的方法来实现这一目标?我的意思是更正确的方法是这样的方法应该涵盖几乎所有引用的可能性(我听说\ d可以用于0-9以及unicode)。提前谢谢!

1 个答案:

答案 0 :(得分:0)

\p{Pi}\p{Pf}类可用于匹配此类引号。然而,它们并没有区分单引号和双引号。

\p{Pi} - &gt;打开报价

\p{Pf} - &gt;收尾报价