我需要从WPF RichTextBox中获取所有文本。
每个人(How to get a WPF rich textbox into a string,RichTextBox (WPF) does not have string property "Text",http://msdn.microsoft.com/en-us/library/ms754041(v=vs.110).aspx等等)都同意这样的代码:
public static string GetText(RichTextBox rtb)
{
TextRange textRange = new TextRange(rtb.Document.ContentStart, rtb.Document.ContentEnd);
string text = textRange.Text;
return text;
}
但它增加了一个“\ r \ n”。在一个非常简单的案例中:
<RichTextBox x:Name="mRichTextBox">
<FlowDocument>
<Section>
<Paragraph>
<Run Text="The dog is brown. The cat is black."/>
</Paragraph>
</Section>
</FlowDocument>
</RichTextBox>
我明白了:
“狗是棕色的。猫是黑色的。\ r \ n”
这可以被视为一个小问题,但实际上我需要准确的文字。
感谢。
答案 0 :(得分:0)
如果你不需要多线,你可以禁用它,不应该有这个问题。
你也可以像这样删除它们:
string text = textRange.Text.Replace(Environment.NewLine, "");
此外,如果您只想删除最后一次出现,可以使用如下函数:
public static string ReplaceLastOccurrence(string Source, string Find, string Replace)
{
int Place = Source.LastIndexOf(Find);
string result = Source.Remove(Place, Find.Length).Insert(Place, Replace);
return result;
}
并像这样使用它。
string text = ReplaceLastOccurrence(textRange.Text,Environment.NewLine,"");
每次你有一个你最后都会得到一条新线,所以一定要按照它来处理。
答案 1 :(得分:0)
但是你得到了实际的文字 您认为段落不应以新行结尾吗?
尝试此操作并将粘贴从屏幕复制到记事本
<RichTextBox x:Name="mRichTextBox">
<FlowDocument>
<Section>
<Paragraph/>
<Paragraph/>
<Paragraph>
<Run Text="The dog is brown. The cat is black."/>
</Paragraph>
</Section>
</FlowDocument>
</RichTextBox>