2016-11-18 6 views
-2

a4으로 바꾸려고합니다. 그것은 숫자와 특수 문자가 Replace에서 작동하지 않음

내가 사용하고 코드입니다 ... "는"하지 "4"로하지만 "4nsi4nsicpg1252ng16393rd4r"로 텍스트를 대체 RichTextBox1.Rtf = RichTextBox1.Rtf.Replace("a", "4")

내가 "A"로 대체 할 수있는 방법에 대한 도움 "4"? BTW 나는 "4"가 아닌 "test"로 "a"를 대체 할 수 있습니다.

답변

5

RTF (서식있는 텍스트 형식)은 텍스트의 서식을 지정하는 방법을 설명하는 문서와 제어 단어의 혼합입니다. RichTextBox1.Rtf 속성은 일반 텍스트가 아닌 RTF를 반환하므로 Replace 문이 일부 RTF 컨트롤 단어를 손상시킵니다. 예를 들어, RTF 아마 시작합니다

\rtf1, \ansi\ansicpg1252가 RTF 제어 단어
{\rtf1\ansi\ansicpg1252 ... 

. - 제어 워드의 시작을 표시하는 데 사용됩니다 뺀 \ 문자

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

\4nsi 이후 및 \4nsicpg1252, 더 이상 유효 RTF 제어 워드 없습니다가 텍스트로 표시되는 끝 : 당신의 Replace는에 그 변경되었습니다.

당신이 사용하는 대신 시도 할 수 있도록 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

관련 문제