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 に答える