我的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} < / p>
在它的末尾有一个额外的\ pard \ par,我想删除它。我认为这是我必须使用的文本编辑器的一些错误或类似的东西在RTF的末尾添加额外的\ pard \ par,但是我还想保留\ pard \ par如果用户有意将它们添加到他们的文本中。所以我想我想要一个很好的方法从RTF的末尾删除额外的\ pard \ par,但只删除它们中的一对,因为用户可能故意输入了一些断行...
字符串方法?正则表达式?
答案 0 :(得分:2)
是的,这可能令人抓狂。
另一种方法是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你好\ par \ }