2017-07-26 11 views
1

私はVisual Studio 2015、C#、WPF、XAMLを使用しています。RichTextBoxからDouble LineBreakを文字列に取り除く

RichTextBoxからstringにテキストをコピーし、LineBreaksを削除します。

LineBreakは、Shift + Enterを押すと発生します。ただEnterDouble LineBreakとなります。

Double LineBreakの後のテキストは、TextRangeから切り捨てられ、stringにコピーされます。

Double LineBreakとはなんですか?それを削除するにはどうすればよいですか?

richtextbox linebreak


XAML

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

C#

Paragraph p = new Paragraph(); 

// Get RichTextBox TextRange Method 
// 
public String MessageRichTextBox() 
{ 
    rtbMessage.Document = new FlowDocument(p); 

    TextRange textRange = new TextRange(
     rtbMessage.Document.ContentStart, 
     rtbMessage.Document.ContentEnd 
    ); 

    return textRange.Text; 
} 


// RichTextBox to String 
// Remove LineBreaks 
// 
string message = MessageRichTextBox().Replace(Environment.NewLine, ""); 
私が試してみました

除去:

https://stackoverflow.com/a/6750310/6806643

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", "") 

答えて

2

あなたはこの

public String MessageRichTextBox() 
{ 
    rtbMessage.Document = new FlowDocument(p); 
    TextRange textRange = new TextRange(
     rtbMessage.Document.ContentStart, 
     rtbMessage.Document.ContentEnd 
    ); 
    return textRange.Text; 
} 

ようRichTextBoxテキストを取得するとき、あなたが間違っを取得するので、あなたは、rtbMessageの内容を変更しますコンテンツ。私はあなたが何とかドキュメントの第1段落をpに参照して、そこの第1段落に文書を切り捨てると仮定します。回線rtbMessage.Document = new FlowDocument(p);を削除して、問題なく動作しているかどうかを確認してください。

ユーザがを入力した場合と入力してください。LineBreakは挿入されていませんが、新しいParagraphが作成されます。おそらく空の行にキャレットを配置しようとすると、それを確認することができます。二重改行の場合は空の行があり、キャレットをその上に置くことができます。

  • 条第1項:

    とにかく、あなたのスクリーンショットのドキュメントには、このような2つの段落のブロックを持っていなければならない "こんにちは、世界を"

  • 段落2: "これはテストです。< LineBreak/>例。"

したがって、テキストとしてコンテンツを取得しようとしているドキュメントを再作成すると、最初の段落しか残っておらず、残りの部分は破棄されます。

関連する問題