0

我正在使用 Open XML Office SDK 2.0 在 word 文档中搜索字符串并列出这些字符串。

    MatchCollection Matches;
    using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(txtLocation.Text, true))
    {
        string docText = null;
        using (StreamReader sr = new StreamReader(wordDoc.MainDocumentPart.GetStream()))
        {
            docText = sr.ReadToEnd();
        }
        Regex regex = new   Regex(@"\(.*?\)");
        Matches = regex.Matches(docText);
    }
    int i = 0;
    while (i < Matches.Count)
    {    Label lb = new Label();
         lb.Text = Matches[i].ToString();
         lb.Location = new System.Drawing.Point(24, (28 + i * 24));
         this.panel1.Controls.Add(lb);
         i++;
     }

问题是有时它返回正确的字符串,例如: (HelloWorld) 但有时它与标签完全不同,例如: < w:rFonts w:ascii="Arial" w:hAnsi="Arial" w:cs="Arial "/ >

我该如何摆脱这些?

4

2 回答 2

0

据推测,所有格式标记都是 XML 样式(在尖括号之间)。String.StartsWith在这种情况下,您可以使用andString.EndsWith方法判断字符串是否为 XML 标记:

// ...
while (i < Matches.Count)
{
     String str = Matches[i].ToString();
     if (!(str.StartsWith("<") && str.EndsWith(">"))) {
         // ...
     }
     i++;
}
于 2012-06-25T11:06:41.993 回答
0

找出我必须做的,将字符串运行到​​另一个 Regex.Replace。这个替换了所有 <> 标签(所以 XML/HTML)

String str = Matches[i].ToString();
str = Regex.Replace(str, @"<(.|\n)*?>", "");
lb.Text  = str;
于 2012-06-25T12:00:20.163 回答