【问题标题】:Split flowdocument into sections c# wpf将流文档拆分为多个部分 c# wpf
【发布时间】:2023-03-03 17:52:01
【问题描述】:

我在RichTextBox 中有一个FlowDocument,看起来像这样:

INT. LOCATION - DAY 

Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
Nulla id risus odio. Donec dictum viverra rutrum. 
Quisque malesuada velit sed augue interdum vehicula. 

                     CHARACTER NAME
                Mauris sit amet nisi varius 
                velit luctus vestibulum tempor egestas augue. 
                Quisque viverra vulputate iaculis. 

Nam sit amet risus at justo feugiat consequat a non ex. Morbi scelerisque libero quam, 
eget imperdiet justo iaculis sed.

EXT. LOCATION - NIGHT

Morbi cursus dictum tempor. Phasellus mattis at massa non porta. 
Etiam ac pellentesque tortor, sit amet facilisis massa. 

                       CHARACTER NAME
                 Aenean viverra convallis dolor, 
                 quis venenatis odio tempus a. 

Sed vel aliquet arcu, in tincidunt est. 

INT. LOCATION - NIGHT

Etiam sit amet tristique sapien. 

现在我需要在每次 INT 时将此文本分成多个部分。或分机。稍后开始在应用程序中使用。最好的方法是什么?

这就是我将文本文件加载到 RichTextBox 中的方式:

private void Button_Click(object sender, RoutedEventArgs e)
{

        openFile.InitialDirectory = @"C:\";
        openFile.Filter = "Text files (*.txt)|*.txt|All Files (*.*)|*.*";
        openFile.RestoreDirectory = true;
        openFile.Title = "Select Script";

        if (openFile.ShowDialog() == true)
        {
            string originalfilename = System.IO.Path.GetFullPath(openFile.FileName);

            TextRange range;
            FileStream fStream;

            if (openFile.CheckFileExists)
            {
                range = new TextRange(rtfMain.Document.ContentStart, rtfMain.Document.ContentEnd);
                fStream = new FileStream(originalfilename, System.IO.FileMode.OpenOrCreate);
                range.Load(fStream, DataFormats.Text);
                fStream.Close();
            }
      }
}

【问题讨论】:

  • 假设有人正在输入数据,您应该让用户在他们想要更改场景时开始一个新部分。 (这看起来像一个脚本/播放)。您可以让用户添加场景,他们在其中输入场景信息,然后添加场景文本。这些都可以作为部分添加到整个 FlowDocument 中
  • 其实就是分析一个脚本。它已被加载到 Richtextbox 中,需要拆分为多个部分。
  • 场景标题是否总是使用 INT 的相同模式。 /分机。 - (某个位置)- DAY / NIGHT,还是有更多的可能性?
  • 它总是 INT。或 EXT 或 I/E 有时前面有一个数字
  • 您能否向我们展示这在 FlowDocument 中是如何存在的,或者您是否尝试仅从脚本文本中生成一个。

标签: c# wpf text richtextbox


【解决方案1】:

由于 FlowDocument 语法非常接近 HTML,我将使用 HTML 解析器拆分解决方案,请参阅:https://softwarerecs.stackexchange.com/questions/10773/c-library-for-parsing-html。您还可以尝试使用任何其他 XML 解析器。

无论你做什么,都不要使用正则表达式,因为那样会导致疯狂,正如 StackOverflow 上最受欢迎的帖子所证明的那样:RegEx match open tags except XHTML self-contained tags

【讨论】:

  • 我认为 OP 有一个文本并想要创建一个 FlowDocument(除非我误解了他们的问题)
  • @JNYRanger 我认为您可能是正确的,基于问题所附的 cmets。
猜你喜欢
  • 2020-05-04
  • 1970-01-01
  • 1970-01-01
  • 2012-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多