Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从richtextbox中的flowdocument中提取以特定单词WPF开头的行_C#_Wpf_Richtextbox_Flowdocument - Fatal编程技术网

C# 从richtextbox中的flowdocument中提取以特定单词WPF开头的行

C# 从richtextbox中的flowdocument中提取以特定单词WPF开头的行,c#,wpf,richtextbox,flowdocument,C#,Wpf,Richtextbox,Flowdocument,我是wpf的新手,我想做一个文本分析工具。 我已经知道如何将文本导入富文本框并正确格式化,但现在我想运行一个方法,提取flowdocument中以INT或EXT开头的所有行,并将它们放在列表框中。在winforms中执行此操作似乎比在WPF中更容易 有人能指导我吗 我希望我已经提供了一些代码,但是对我来说,流程文档和wpf一样是新的。我已经编写了一个代码片段来收集以INT或EXT开头的行。 我确信代码不是最优的,因为我不熟悉RichTextBox,但我认为它很容易理解 private List&

我是wpf的新手,我想做一个文本分析工具。 我已经知道如何将文本导入富文本框并正确格式化,但现在我想运行一个方法,提取flowdocument中以INT或EXT开头的所有行,并将它们放在列表框中。在winforms中执行此操作似乎比在WPF中更容易

有人能指导我吗


我希望我已经提供了一些代码,但是对我来说,流程文档和wpf一样是新的。

我已经编写了一个代码片段来收集以INT或EXT开头的行。 我确信代码不是最优的,因为我不熟悉RichTextBox,但我认为它很容易理解

private List<string> CollectLines()
{
    TextRange textRange = new TextRange(
        // TextPointer to the start of content in the RichTextBox.
        TestRichTextBox.Document.ContentStart,
        // TextPointer to the end of content in the RichTextBox.
        TestRichTextBox.Document.ContentEnd);

    // The Text property on a TextRange object returns a string 
    // representing the plain text content of the TextRange. 
    var text = textRange.Text;

    List<string> resultList = new List<string>();

    // Collect all line that begin with INT or EXT
    // Or use .Contains if the line could begin with a tab (\t), spacing or whatever
    using (StringReader sr = new StringReader(text))
    {
        var line = sr.ReadLine();
        while (line != null)
        {

            if (line.StartsWith("INT") || line.StartsWith("EXT"))
            {
                resultList.Add(line);
            }

            line = sr.ReadLine();
        }
    }

    return resultList;
}
private List CollectLines()
{
TextRange TextRange=新的TextRange(
//text指向RichTextBox中内容开头的指针。
TestRichTextBox.Document.ContentStart,
//文本指向RichTextBox中内容结尾的指针。
TestRichTextBox.Document.ContentEnd);
//TextRange对象的Text属性返回字符串
//表示TextRange的纯文本内容。
var text=textRange.text;
列表结果列表=新列表();
//收集所有以INT或EXT开头的行
//如果行可以以制表符(\t)、间距或其他形式开头,则使用.Contains
使用(StringReader sr=新的StringReader(文本))
{
var line=sr.ReadLine();
while(行!=null)
{
if(line.StartsWith(“INT”)| | line.StartsWith(“EXT”))
{
结果列表。添加(行);
}
line=sr.ReadLine();
}
}
返回结果列表;
}

也许你可以自己找出如何将列表放入列表框:)

这确实是一个很大的帮助。这个列表框我知道怎么做。但是,代码给了我一个错误“mscorlib.dll中发生了类型为'System.ArgumentException'的未处理异常附加信息:路径中的非法字符”知道这是怎么发生的还是如何解决的吗?richtextbox中的文本只包含简单文本。哦,是的,对不起-StreamReader用于文件。当您输入变量文本时,它不是文件路径。这就是错误的原因。我将很快编辑代码。我真的很感谢你的时间和努力。这对meI将StreamReader更改为StringReader是一个很大的帮助。但是StringReader没有EndOfStream属性。我希望检查线路!=空值将起作用