-5

我正在尝试编辑文件夹(textbox4)中的所有 txt 文件。如果它找到搜索的单词 (textbox2),它将替换为其他 (textbox3)。但是代码什么都不做。

Dim mydir As String = TextBox4.Text
Dim savetxt As New List(Of String)
For Each txtfile As String In System.IO.Directory.GetFiles(mydir, "*.txt") 
For Each line As String In System.IO.File.ReadAllLines(txtfile)
If line.Contains(TextBox2.Text) Then
line.Replace(TextBox2.Text, TextBox3.Text)
End If
savetxt.Add(line)
Next
System.IO.File.WriteAllLines(txtfile, savetxt.ToArray)
savetxt.Clear()
Next
4

2 回答 2

4

string.Replace()返回新值而不是修改现有实例。如果需要,您需要存储结果:

line = line.Replace(TextBox2.Text, TextBox3.Text);
于 2013-04-24T18:31:00.153 回答
1

尝试这个:

Private Function GetFiles(Path As String) As String()
            Dim Files() As String = IO.Directory.GetFiles(Path)
            Return Files
        End Function

Private Sub ProcessFiles(Files As String(), Find As String, Replace As String)
    Dim txt As String

    For Each file In Files
        txt = IO.File.ReadAllText(file)
        If txt.Contains(Find) = True Then
            IO.File.WriteAllText(file, txt.Replace(Find, Replace))
        End If
    Next
End Sub

然后像这样实现:

Private Sub Initate(Path As String, Find As String, Replace As String)
        'get the files paths
        Dim files() As String = GetFiles(Path)

        'find the text and replaces it
        ProcessFiles(files, Find, Replace)
    End Sub

到 [Find] 、 [Replace] 和 [Path] 是 textbox.text

于 2013-04-24T23:35:42.670 回答