2012-01-27 66 views
1

我有一個看起來像這樣的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 \平\ F0 \ FS24 hohohoHi \ PARD \相提並論\相提並論}

有一個在它的結束一個額外的\ PARD \相提並論,我想刪除它。我認爲這是我必須使用的文本編輯器的一些錯誤,或者像在RTF末尾添加額外的\ pard \ par一樣的錯誤,但是如果用戶有意將它們添加到它們的文本中,我還想保留\ pard \ par 。所以我認爲我正在尋求一種很好的方法來從RTF的末尾刪除額外的\ pard \ par,但只刪除其中一對,因爲用戶可能已故意輸入了一些中斷線......

字符串方法?正則表達式?

回答

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(); 

下面是兩種方法只是一個「你好」和一行返回的結果:

{\ 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
}