В C# WPF
, у меня есть функция для извлечения текста из flowdocumentreader
:(C# WPF) метод «TextPointer.GetTextInRun» игнорирует символы, такие как « г п»
static string GetText(TextPointer textStart, TextPointer textEnd)
{
StringBuilder output = new StringBuilder();
TextPointer tp = textStart;
while (tp != null && tp.CompareTo(textEnd) < 0)
{
if (tp.GetPointerContext(LogicalDirection.Forward) ==
TextPointerContext.Text)
{
output.Append(tp.GetTextInRun(LogicalDirection.Forward));
}
tp = tp.GetNextContextPosition(LogicalDirection.Forward);
}
return output.ToString();
}
Затем я использую функцию следующим образом:
string test = GetText(rtb.Document.ContentStart, rtb.Document.ContentEnd);
Однако строка "test"
игнорирует все разрывы строк, что означает "\r\n"
. Он сохраняет символ табуляции, "\t"
.
Мой вопрос в том, как сохранить все разрывы строк? Я хочу автоматически выделить первое предложение каждого абзаца, поэтому мне нужно обнаружить символы разрыва строки, "\r\n"
.
Заранее благодарим за ваше время.
Update: я загрузить документ .rtf в FlowDocumentReader так:
if (dlg.FileName.LastIndexOf(".rtf") != -1)
{
paraBodyText.Inlines.Clear();
string temp = File.ReadAllText(dlg.FileName, Encoding.UTF8);
MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(temp));
TextRange textRange = new TextRange(flow.ContentStart, flow.ContentEnd);
textRange.Load(stream, DataFormats.Rtf);
myDocumentReader.Document = flow;
stream.Close();
}
Любые конкретные причины, по которым вы не используете TextRang е? – Ron
@Ramin Можете ли вы показать мне, как использовать TextRange для решения проблемы? Я новичок в C#. Благодарю. –