替换 richtextbox 中的一行 vb.net

replace a line in richtextbox vb.net

我有这段代码,但它有错误,我该怎么办?

         Dim lines As New List(Of String)
    lines = RichTextBox1.Lines.ToList
    'Dim FilterText = "@"

    For i As Integer = lines.Count - 1 To 0 Step -1
        'If (lines(i).Contains(FilterText)) Then
        RichTextBox1.Lines(i) = RichTextBox1.Lines(i).Replace("@", "@sometext")
        'End If
    Next

    RichTextBox1.Lines = lines.ToArray

更新:而下面的"works"它只修改从Lines-属性返回的数组。如果更改该数组,则不会更改 TextBox 的文本。因此,如果要更改文本,则需要将整个数组重新分配给 Lines-属性(如下所示)。所以我保留我的答案的第一部分只是因为它修复了语法而不是真正的问题。


不是

RichTextBox1.Lines(i).Replace = "@sometext"

但是

RichTextBox1.Lines(i) =  "@sometext"

可以向前循环Lines,这里不需要反向循环。


也许您想将所有 "@" 替换为 "@sometext"

RichTextBox1.Lines(i) = RichTextBox1.Lines(i).Replace("@","@sometext")

这里是必要的完整代码(因为它似乎仍然是一个问题):

Dim newLines As New List(Of String)
For i As Integer = 0 To RichTextBox1.Lines.Length - 1
    newLines.Add(RichTextBox1.Lines(i).Replace("@", "@sometext"))
Next
RichTextBox1.Lines = newLines.ToArray()

但也许你甚至可以使用:

RichTextBox1.Text = RichTextBox1.Text.Replace("@","@sometext")`

because if we have @ abcd this code change it to @ sometextabcd ! I Want a code to replace for example line 1 completely to @ sometext

下次请第一时间提供所有相关信息:

Dim newLines As New List(Of String)
For Each line As String In RichTextBox1.Lines
    Dim newLine = If(line.Contains("@"), "@sometext", line)
    newLines.Add(newLine)
Next
RichTextBox1.Lines = newLines.ToArray()