2015-12-09 58 views
0

我有这段代码但它有错误,我该怎么办?替换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 
+0

显示错误和你想达到什么样的??? –

+0

RichTextBox1.Lines(i).Replace =“@sometext” –

回答

2

更新:在下面的“作品”它确实只修改这是从Lines -property返回的数组。如果您更改该数组,则不会更改文本框的文本。因此,如果要更改文本(如下所示),则需要将整个数组重新分配给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() 
+0

我试图替换一行:if Line(x)Contains = @将其替换为@SomeText :( –

+0

对于RichTextBox1.Lines中的每个我 RichTextBox1.Lines i)= RichTextBox1.Lines(i).Replace(“@”,“@stext”) 接下来发生了什么错误?! –

+0

@MrArman:你为什么现在使用不同的代码?这是错误的,因为那样你不循环整数,但是字符串(每一行),所以'i'是行而不是数字,所以你不能在'RichTextBox1.Lines(i)'中使用它,你已经有了这个行,但这不行,你不能替代当你使用'For Each'时你的第一个问题是正确的,但你可以循环前进:'For I As Integer = O To line1.Count - 1 ...' –