2009-02-09 35 views
1

我目前正在毆打我的頭靠在牆上試圖弄清楚這一點。但長話短說,我想將2 UTF-8'\ u0002'之間的字符串轉換爲粗體格式。這是針對我正在開發的IRC客戶端,所以我一直在遇到這些問題。我討論過正則表達式,並發現匹配rtf(('02')可以捕捉它,但我不知道如何匹配最後一個字符並將其更改爲\ bclear或任何rtf格式化close。在RichTextBox中格式化rtf/unicode/utf-8的最簡單方法是什麼?

我不能確切地我試圖解析,因爲字符獲取過濾後的文本粘貼。但在char值看時其2

一個int下面是粘貼的嘗試違規文本:

[2點34]試驗測試

+0

粘貼字符並將它們格式化爲代碼示例 – 2009-02-09 20:47:49

+0

我試過,無論如何格式化它們。 – 2009-02-09 20:51:42

回答

1

你可以使用任何

rtb.Rtf = Regex.Replace(rtb.Rtf, @"\\'02\s*(.*?)\s*\\'02", @"\b $1 \b0"); 

rtb.Rtf = Regex.Replace(rtb.Rtf, @"\\'02\s*(.*?)\s*\\'02", @"\'02 \b $1 \b0 \'02"); 

取決於你是否希望保留\ u0002s在那裏。

\ b和\ b0在RTF中打開和關閉粗體。

0

我沒有測試用例,但您也可以使用Clipboard類的GetText methodUnicode TextDataFormat。基本上,我認爲你可以將輸入放入剪貼板並以不同的格式輸出(適用於RTF等)。下面是MS的演示代碼(不能直接適用,但表明了API):

// Demonstrates SetText, ContainsText, and GetText. 
public String SwapClipboardHtmlText(String replacementHtmlText) 
{ 
    String returnHtmlText = null; 
    if (Clipboard.ContainsText(TextDataFormat.Html)) 
    { 
     returnHtmlText = Clipboard.GetText(TextDataFormat.Html); 
     Clipboard.SetText(replacementHtmlText, TextDataFormat.Html); 
    } 
    return returnHtmlText; 
} 

當然,如果你這樣做,你可能想保存和恢復什麼在剪貼板上,否則你可能會打亂你的用戶!

相關問題