我正在为自己制作一个小应用程序,它根据在表单上输入几个富文本框的文本连接一些语句。
一个文本框可能有10-20行文本,每行都是它自己的单独条目,所以我需要能够逐行阅读文本。
然而,在研究WPF时,我只在网上看到一条关于阅读文本的声明,它从头到尾阅读了该框的内容。我想以某种方式循环它或逐行分开。
根据MSDN,要将WPF富文本框中的文本提取为字符串,您需要使用:
string StringFromRichTextBox(RichTextBox rtb)
{
TextRange textRange = new TextRange(
// TextPointer to the start of content in the RichTextBox.
rtb.Document.ContentStart,
// TextPointer to the end of content in the RichTextBox.
rtb.Document.ContentEnd
);
// The Text property on a TextRange object returns a string
// representing the plain text content of the TextRange.
return textRange.Text;
}
但是,如果您要查看我的富文本框,您会看到里面的文本是值列表,因此,例如,一个框可能如下所示:
000423523
324
93489290099
823342342
0003242342
44400298889
我希望能够在RichTextBox
内逐行读取这些值,但在WPF中,似乎不是richtextbox1.Lines
选项。
答案 0 :(得分:1)
您可以使用String.Split()
方法按换行符分割RichTextBox
文本,并从结果集中排除空行,例如:
String[] lines =
StringFromRichTextBox(rtb).Split(new[]{Environment.NewLine}
, StringSplitOptions.RemoveEmptyEntries);
foreach (var line in lines)
{
MessageBox.Show(line);
}
答案 1 :(得分:0)
很抱歉为了简洁,但是如
那样简单var lines = richTextBox1.Text.Split('\n');
答案 2 :(得分:0)
要读取WPF RichTextBox的行,可以使用以下代码。
TextRange textRange = new TextRange(rtb.Document.ContentStart, rtb.Document.ContentEnd);
string[] rtbLines = textRange.Text.Split(Environment.NewLine);
foreach(line in rtbLines)
{
//do something with line
}
对于此特定代码,您将需要使用以下库
using System.Windows.Documents;