2016-11-18 149 views
-2

我試圖在RichTextBox中將a替換爲4。它取代了文字「一」不帶「4」而是「4nsi4nsicpg1252ng16393rd4r」 ..數字和特殊字符不替換

這是我使用的代碼: RichTextBox1.Rtf = RichTextBox1.Rtf.Replace("a", "4")

我如何能在「一」替換任何幫助一個「4」?順便說一句我可以用「test」替換「a」而不是「4」

回答

5

RTF(富文本格式)是文檔和控制字的文本組合,用於描述如何格式化文本。 RichTextBox1.Rtf屬性返回RTF,而不是純文本,因此您的Replace語句會破壞某些RTF控制字。例如,您可能RTF開始:

{\rtf1\ansi\ansicpg1252 ... 

\rtf1\ansi\ansicpg1252是RTF控制字。你Replace改變了到:

{\rtf1\4nsi\4nsicpg1252 ... 

由於\4nsi\4nsicpg1252不再有效RTF控制字,他們最終會被顯示爲文本 - 減用來指示控制字的開始\字符。

RichTextBox.Text屬性將返回純文本,所以你可以嘗試使用,而不是,但我懷疑,這也將剔除已被應用到該文件的任何格式:

RichTextBox1.Text = RichTextBox1.Text.Replace("a", "4") 
0

查找/替換可以在richtextbox控件中執行以保留格式。如這裏所述

Private Sub Replace(ByVal findText As String, ByVal replacement As String) 
    Dim startIndex = 0 
    Dim foundIndex = RichTextBox1.Find(findText, startIndex, RichTextBoxFinds.None) 

    While foundIndex >= 0 
     RichTextBox1.SelectedText = replacement 
     startIndex = foundIndex + replacement.Length 
     foundIndex = RichTextBox1.Find(findText, startIndex, RichTextBoxFinds.None) 
    End While 
End Sub 

多個變化可以被組合成一個單一的撤消塊,使用第二RichTextBox中: https://stackoverflow.com/a/5097179