C# 将RichTextBox中的双换行符删除为字符串

C# 将RichTextBox中的双换行符删除为字符串,c#,wpf,visual-studio,xaml,C#,Wpf,Visual Studio,Xaml,我使用的是Visual Studio 2015、C#、WPF和XAML 我将文本从RichTextBox复制到字符串,并删除任何换行符 如果按Shift键,则会出现换行符+回车键。但是只要输入就会导致双线中断 Double LineBreak之后的任何文本都将从TextRange中切断,并复制到字符串中 这是什么Double LineBreak以及如何删除它 XAML <RichTextBox x:Name="rtbMessage" Margin="10,10,10,50" />

我使用的是Visual Studio 2015、C#、WPF和XAML

我将文本从
RichTextBox
复制到
字符串
,并删除任何
换行符

如果按Shift键,则会出现
换行符
+
回车键
。但是只要输入
就会导致
双线中断

Double LineBreak
之后的任何文本都将从
TextRange
中切断,并复制到
字符串中

这是什么
Double LineBreak
以及如何删除它


XAML

<RichTextBox x:Name="rtbMessage" Margin="10,10,10,50" />

我尝试过删除:


当您检索像这样的
RichTextBox
文本时

public String MessageRichTextBox()
{
    rtbMessage.Document = new FlowDocument(p);
    TextRange textRange = new TextRange(
        rtbMessage.Document.ContentStart,
        rtbMessage.Document.ContentEnd
    );
    return textRange.Text;
}
您修改了
rtbMessage
的内容,因此得到了错误的内容。我假设您以某种方式引用了
p
中文档的第1段,并将文档截断到第1段。尝试删除行
rtbMessage.Document=newflowdocument(p)并查看它是否适合您

当用户点击Enter键时,不会插入双分线符,但会创建一个新的段落。您可以通过尝试将插入符号放置在假定为空行的位置进行验证-如果是双线分隔符,则应该有一条空行,并且可以将插入符号放置在其上

无论如何,屏幕截图上的文档应该有两个段落块,如下所示:

  • 第1段:“你好,世界。”
  • 第2段:“这是一个测试示例。”
因此,我的假设是,当您重新创建一个文档,试图将其内容检索为文本时,您只保留第一段,而放弃其余部分

Regex.Replace(MessageRichTextBox(), @"[\u000A\u000B\u000C\u000D\u2028\u2029\u0085]+", string.Empty);

.Replace(Environment.NewLine, "")
.Replace("\n", "")
.Replace("\r\n", "")
.Replace("\u2028", "")
.Replace("\u000A", "")
.Replace("\u000B", "")
.Replace("\u000C", "")
.Replace("\u000D", "")
.Replace("\u0085", "")
.Replace("\u2028", "")
.Replace("\u2029", "")
public String MessageRichTextBox()
{
    rtbMessage.Document = new FlowDocument(p);
    TextRange textRange = new TextRange(
        rtbMessage.Document.ContentStart,
        rtbMessage.Document.ContentEnd
    );
    return textRange.Text;
}