1

在 VB 2010 中使用它:

Imports System.Text.RegularExpressions

Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim lines() As String = IO.File.ReadAllLines("filename.txt")
        Dim foundIndex As Integer = Array.FindIndex(lines, Function(l) l.StartsWith(TextBox1.Text)) 'assuming TextBox1.Text = the part of the line before the =
        lines(foundIndex) = Regex.Replace(lines(foundIndex), "(?<=" & TextBox1.Text & "=)\d+", TextBox2.Text) 'TextBox2.Text is the replacement number
        Stop
        'to rewrite the file:
        'IO.File.WriteAllLines("filename.txt", lines)
    End Sub
End Class

...但是每次我保存文本文件时,它都会在等号后添加数字。

我希望它在等号之后替换该行上的所有内容。

4

1 回答 1

2

我执行了你的代码,它没有改变:

Sub Main
     Dim lines() As String = IO.File.ReadAllLines("c:\temp\filename.txt")
     lines.Dump()
        Dim foundIndex As Integer = Array.FindIndex(lines, Function(l) l.StartsWith("blah")) 'assuming TextBox1.Text = the part of the line before the =
        foundIndex.Dump()
        lines(foundIndex) = Regex.Replace(lines(foundIndex), "(?<=blah=)[\d.e+]+", "replaced") 'TextBox2.Text is the replacement number
        IO.File.WriteAllLines("c:\temp\filename.txt", lines)
End Sub

如果文件是

test=456
blah=456
blah=just

它会变成

test=456
blah=replaced
blah=just

这是你想要的不是吗?

更新 1

我换了

"(?<=blah=)\d+"

"(?<=blah=)[\d.]+"

更新 2

关于像“1e+007”这样的字符串的问题。与“=”之后的字符串匹配的部分当前是 [\d.]

还记得小数点像 3.25 这样的数字有问题吗?通过添加“。”解决了这个问题。到字符类 [\d] 所以它变成 [\d.] 现在任何是数字 "\d" 和 "." 会匹配。

新问题以同样的方式解决。现在“e”和“+”也应该匹配。得到它?所以字符类现在变成 [\d.e+]

试一试,让我知道进展如何。

现在也应该清楚如何修改正则表达式以匹配“BGS_LOGO.BIK”如果你能解决你明白发生了什么。

于 2012-05-21T13:45:56.820 回答