2015-12-09 59 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 ...' –