我有一个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等。其中每个数字是原始文件每一行中的第二个项目。
答案 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)))
由内而外:
File.ReadAllLines(newFile1)
将文件分割成几行,并产生一个包含这些行的字符串数组,该字符串数组将被馈送到... ...Select(Function(s) s.Split(","c)(1))
在每一行上运行,方法是用逗号s.Split(","c)
分割行,然后索引结果数组(1)
以返回第二个(从零开始)元素。这被送入... String.Join(",", ... )
,它使用了第二个元素,然后用逗号连接在一起。