Лучший способ удалить лишние отметки из текста RTF - PullRequest
1 голос
/ 27 января 2012

У меня есть RTF, который выглядит так:

{\ rtf1 \ ansi \ ansicpg1252 \ uc0 \ deff0 {\ fonttbl \ r \ n {\ f0 \ fswiss \ fcharset0 \ fprq2 Arial;} \ r \ n {\ f1 \ froman \ fcharset2 \ fprq2 Symbol;}} \ r \ n {\ colortbl; \ red0 \ green0 \ blue0; \ red255 \ green255 \ blue255;} \ r \ n \ r \ n \deftab1134 \ pard \ plain \ f0 \ fs24 hohohoHi \ pard \ par \ par}

В конце есть дополнительный \ pard \ par, который я хочу удалить.Я думаю, что это какая-то ошибка в текстовом редакторе, которую я должен использовать, или что-то подобное, добавляющее extra \ pard \ par в конец RTF, НО я также хочу сохранить \ pard \ par, если пользователи намеренно добавили их в свой текст,Поэтому я думаю, что я прошу хорошего способа удалить лишние \ pard \ par с конца RTF, но удалить только одну их пару, потому что пользователи, возможно, намеренно ввели несколько строк разрыва ...

Строковые методы?RegEx?

1 Ответ

2 голосов
/ 27 января 2012

Да, это может сводить с ума.

Одним из способов решения этой проблемы является SelectAll и захват SelectedRtf вместо Rtf.

Чтобы избежать перепрошивки пользователя, проще создать быстрый временный элемент управления RichTextBox, например:

StringBuilder sb = new StringBuilder();
sb.AppendLine(richTextBox1.Rtf);
sb.AppendLine();

string myRTF = string.Empty;
using (RichTextBox rtb = new RichTextBox()) {
  rtb.Rtf = richTextBox1.Rtf;
  rtb.SelectAll();
  sb.AppendLine(rtb.SelectedRtf);
}

string results = sb.ToString();

Вот результат этих двух методов с просто «Hello» и возвращением в одну строку:

{\ rtf1 \ ansi \ ansicpg1252 \ deff0 \ deftab1134 {\ fonttbl {\ f0 \ fswiss \ fprq2 \ fcharset0 Arial;}}
\ viewkind4 \ uc1 \ pard \ lang1033 \ f0 \ fs24 Здравствуйте \ par
\ П
}

{\ rtf1 \ ansi \ ansicpg1252 \ deff0 \ deftab1134 {\ fonttbl {\ f0 \ fswiss \ fprq2 \ fcharset0 Arial;}}
\ viewkind4 \ uc1 \ pard \ lang1033 \ f0 \ fs24 Hello \ par
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...