数字和特殊字符不起作用

时间:2016-11-18 14:03:14

标签: vb.net visual-studio-2015

我正在尝试将a替换为RichTextBox中的4。它将文本“a”替换为“4”而不是“4nsi4nsicpg1252ng16393rd4r”。

这是我正在使用的代码: RichTextBox1.Rtf = RichTextBox1.Rtf.Replace("a", "4")

有关如何用“4”替换“a”的任何帮助?顺便说一下,我可以用“test”替换“a”而不是“4”

2 个答案:

答案 0 :(得分: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")

答案 1 :(得分: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