【问题标题】:Parse Text File after a specific word VB.NET在特定单词 VB.NET 之后解析文本文件
【发布时间】:2014-04-24 17:37:29
【问题描述】:

我有一个模块应用程序,它读取文本文件并查找其中包含特定单词的行。

我的输入看起来像这样

 Dealer Number: 90402001
 Dealer Name: SAN TAN FORD     
 Contract Number: 7466564   
 OverRide Class:       
 Contract Code: 3417620
 Portal Claim#: 148905

 Dealer Number: 90402001
 Dealer Name: SAN TAN FORD     
 Contract Number: 7679454   
 OverRide Class:       
 Contract Code: 3762406
 Portal Claim#: 149325

 Dealer Number: 90416003
 Dealer Name: CAR TOWN KIA     
 Contract Number: DG209507  
 OverRide Class:       
 Contract Code: 3110169
 Portal Claim#: 134550

 Dealer Number: 90430005
 Dealer Name: RICH FORD     
 Contract Number: 7380708   
 OverRide Class:       
 Contract Code: 3130744
 Portal Claim#: 148537

我的输出如下

 Dealer Name: SAN TAN FORD     Contract Number: 7466564
 Dealer Name: SAN TAN FORD     Contract Number: 7679454
 Dealer Name: RICH FORD        Contract Number: 7380708

我现在需要做的就是抓取“数字:”之后的文本

这是我目前所拥有的

 Imports System.IO

 Module Module1

Sub Main()

    Dim str
    Dim fileName = "C:\Users\username\Desktop\textfile.txt"

    Dim lines() = File.ReadAllLines(fileName)

    For i = 0 To lines.Length - 1
        If lines(i).Contains("SAN TAN FORD") Then
            Str = String.Format("{0}{1}", lines(i), lines(i + 1))
            Console.WriteLine(str)
        ElseIf lines(i).Contains("RICH FORD") Then
            Str = String.Format("{0}{1}", lines(i), lines(i + 1))
            Console.WriteLine(str)
        End If
    Next

End Sub

 End Module

我认为有类似lines.after的东西?所以它会像

 text = lines(i).after("Number:")
 Console.writeline(text)

那会给我

 7466564
 7679454
 7380708

想法?

【问题讨论】:

  • 我有点困惑——你希望你的最终输出是什么(总共)?
  • 我的输出将是我希望模块给我的。 7466564 等...为什么我的问题被否决了,我认为我非常具体。
  • 我不知道为什么...不是我 :( - 不过很高兴你得到了解决方案。

标签: vb.net parsing text .net


【解决方案1】:

有几种不同的方法可以做这样的事情。您可以使用IndexOfSubString 来查找并提取您想要的字符串部分。您可以使用Regex 类来查找和读取匹配值,或者最简单的方法是使用Split 方法。如果您认为字符串"Number: " 是两个其他字符串之间的分隔符,那么您可以使用Split 来获取该分隔符之前和之后的字符串。所以,例如:

Dim input As String = "Contract Number: 7380708"
Dim parts() As String = input.Split("Number: ")
Console.WriteLine(parts(0))  ' Outputs "Contract "
Console.WriteLine(parts(1))  ' Outputs "7380708"

【讨论】:

  • 太棒了,我知道拆分,但我不知道你可以这样索引它。谢谢。
【解决方案2】:

没有“after”功能,但您可以使用 split 或 indexof 执行类似的操作

    Dim input, output As String

    input = "Contract Number: 7466564"

    ' With trim
    output = input.Split(":")(1).Trim()
    Console.WriteLine(output)

    ' With index of
    output = input.Substring(input.IndexOf("Contract Number:") + "Contract Number:".Length).Trim()
    Console.WriteLine(output)

【讨论】:

    猜你喜欢
    • 2013-12-24
    • 1970-01-01
    • 1970-01-01
    • 2021-10-15
    • 2013-08-14
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多