替换richtextbox vb.net中的一行

时间:2015-12-09 11:35:42

标签: vb.net replace line

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

         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

1 个答案:

答案 0 :(得分:4)

更新:以下"有效"它只修改从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")`
  

因为如果我们有@ abcd这个代码将它更改为@ sometextabcd!一世   想要一个代码,例如将第1行完全替换为@ 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()