在字符串文件中获取每一行第二项的最简单方法是什么

时间:2019-06-18 18:36:12

标签: vb.net

我有一个String文件,每行有8个项目(用逗号分隔),例如CA,23456,aName,aType,anotherName,aWord,secondword,number。我想创建一个新的项目字符串,该字符串由原始文件每一行的第二个项目(整数)组成。我知道有很多方法可以做到这一点,但是外面有人知道如何用很少的代码行来做到这一点,这就是我想要的。我宁愿不使用解析器。

显示我尝试过的方法的方法是看下面的代码。

    Dim sn2 As String = ""
    Dim sn2S As String = ""
    Using readFile As New StreamReader(newFile1)
        Do While readFile.Peek() <> -1
            sn2S = readFile.ReadLine(1)
            sn2 = sn2 & sn2S & ","
        Loop
    End Using

代码返回每行的第二个字符,而不是第二个项目。我希望得到一个看起来像这样的字符串:123,1345,4325,3321,3456,3211等。其中每个数字是原始文件每一行中的第二个项目。

3 个答案:

答案 0 :(得分:0)

您可以按单元将其拆分

    Dim row As String = "CA,23456,aName,aType,anotherName,aWord,secondword,number"

    Dim cells() As String = row.Split(",")
    Dim cellValue As String = cells(1)

但是在您的情况下,我只是按照分隔符的索引进行搜索和Substring。

    Dim startPosition As Integer = row.IndexOf(",") + 1
    Dim endPosition As Integer = row.IndexOf(",", startPosition)
    Dim cellValue As String = row.Substring(startPosition, endPosition - startPosition)

如果整个文件都存储在内存中,则可能有一些正则表达式可以一遍完成该工作。

至此行

    sn2 = sn2 & sn2S & ","

您可能想检查是否进行连接或使用stringbuilder。

答案 1 :(得分:0)

您可以尝试

 Dim sn2 As String = ""
 Dim sn2S(7) As String = ""
    Using readFile As New StreamReader(newFile1)
        Do While readFile.Peek() <> -1
            Array.Clear(sn25,0,sn25.Length)
            sn2S = readFile.ReadLine(1).Split(",")
            sn2 = sn2 & sn2S(1) & ","
        Loop
    End Using

答案 2 :(得分:-1)

一行

Dim sn2 = String.Join(",", File.ReadAllLines(newFile1).Select(Function(s) s.Split(","c)(1)))

由内而外:

  1. File.ReadAllLines(newFile1)将文件分割成几行,并产生一个包含这些行的字符串数组,该字符串数组将被馈送到...
  2. ...Select(Function(s) s.Split(","c)(1))在每一行上运行,方法是用逗号s.Split(","c)分割行,然后索引结果数组(1)以返回第二个(从零开始)元素。这被送入...
  3. String.Join(",", ... ),它使用了第二个元素,然后用逗号连接在一起。