如何返回包含特定单词的段落?

时间:2018-08-10 23:01:53

标签: c# regex

我需要通读文档以查找“苹果”一词的出现。找到“苹果”后,我需要返回包含该单词的整个段落。有没有办法在C#中做到这一点?可以做到吗?

当然,返回包含“ apple”的句子非常简单,但是我不确定要检索整个段落需要做什么。段落是否有可识别的分隔符,可以与正则表达式一起使用?

要重申:

  • 需要分析整个 PDF 文档。
  • 找到“苹果”一词后,返回包含它的段落。
  • 针对每次出现的“苹果”一词执行此操作。

1 个答案:

答案 0 :(得分:1)

通常,句子之间用space隔开,Regex相当于\scarriage return line feedCRLF)等于\r\n 有时一行也是一个\n

让我们假定段落由两个(或多个)CRLF(或LF)分隔。 拥有段落后,我们可以在这些段落中搜索所需的任何单词:

   private static ArrayList paragraphs(string entireText)
    {
        char[] sep1 = new char[] { '\r', '\n', '\r', '\n' };
        char[] sep2 = new char[] { '\n', '\n' };

        string[] chunks = entireText.Split(sep1);
        ArrayList paragraphs = new ArrayList();
        foreach (string chunk in chunks)
        {

            string[] paras = chunk.Split(sep2);
            foreach (string paragraph in paras)
                paragraphs.Add(paragraph.Trim());
        }
        return paragraphs;
    }

   public static void Main()
        {
            string entireText = "your_text";
             ArrayList paragraphs = paragraphs(entireText);
            ArrayList containingWordList = new ArrayList();
            foreach (String paragraph : paragraphs){
                if (paragraph.Contains(word)) containingWordList.Add(paragraph);
            }
        }