vb.net readalllines填写表格替换某些行的编码建议

问题描述 投票:0回答:1

我要完成的工作是读取文本文件,并通过从第二种形式填写文本来选择要修改的某些行。这是我当前正在使用的代码示例。发生的事情是我正在寻找以718开头的行,然后在该行之后的某处会有以720开头的行。我需要两条线都填写第二个表单。我能想到的唯一方法是继续在行上加1,直到达到我需要的行。我对此还很陌生,我敢肯定有一种更简单的方法可以使用Try或While来做到这一点,但我不确定如何做。感谢任何帮助。

Dim lines() As String = File.ReadAllLines(tempsave)
For i As Integer = 0 To lines.Length - 1
If lines(i).StartsWith("718") Then
  If lines(i + 1).StartsWith("720") Then
       Dim array() As String = lines(i).Split("*"c, "~"c)
       Dim array2() As String = lines(i + 1).Split("*"c, "~"c)
       FormFill.TextBox1.Text = array(3)
       FormFill.TextBox2.Text = array(9)
       FormFill.ShowDialog()
       lines(i) = lines(i).Replace(array(3), FormFill.TextBox1.Text)
       lines(i + 1) = lines(i + 1).Replace(array(9), FormFill.TextBox2.Text)
  Else
       If lines(i + 2).StartsWith("720") Then
           Dim array() As String = lines(i).Split("*"c, "~"c)
           Dim array2() As String = lines(i + 2).Split("*"c, "~"c)
           FormFill.TextBox1.Text = array(3)
           FormFill.TextBox2.Text = array(9)
           FormFill.ShowDialog()
              lines(i) = lines(i).Replace(array2(3),FormFill.TextBox1.Text)
              lines(i + 2) = lines(i + 2).Replace(array(9), FormFill.TextBox2.Text)
       End If
   End If
End If

示例数据:

123*test*test*test~
718*test*test*test~
543*test*test*test~
720*test*test*test~
718*test*test*test~
vb.net windows-forms-designer file.readalllines
1个回答
0
投票

[在这里,尝试这个:

Public Sub Lines()
  Dim _
    aNextLines,
    aAllLines As String()

  Dim _
    s718Line,
    s720Line As String

  aAllLines = IO.File.ReadAllLines("D:\Logs\Data.log")

  For i As Integer = 0 To aAllLines.Length - 1
    If aAllLines(i).StartsWith("718") Then
      s718Line = aAllLines(i)
      aNextLines = aAllLines.Skip(i).ToArray
      s720Line = aNextLines.FirstOrDefault(Function(Line) Line.StartsWith("720"))

      ' Process data here

    End If
  Next
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.