我正在学习阅读文本文件,Streamreader
是迄今为止我所知道的唯一一个课程。
到目前为止,我已经看到这个类允许我逐行(.ReadToEnd
)或逐字符(.ReadLine
)读取整个文件(.Read
)。
但是我无法想象如何阅读,
分隔的子串并解决这个问题:
(以下4行是textfile.txt的内容)
COLUMN1,MAIL1,COLUMN3,COLUMN4,COLUMN5,MAIL2
".","user@DOMAIN.EDU.PE","1","2013-05-08 00:00:00","0","user@DOMAIN.EDU.PE"
".","id@DOMAIN1.COM.PE","1","2013-05-08 00:00:00","0","HADSA7@DOMAIN1.COM.PE"
".","myid@DOMAIN2.COM.PE","1","2013-05-08 00:00:00","0","4671@DOMAIN2.COM.PE"
如果第一个电子邮件地址等于第二个,请执行:
Numberofmatched=Numberofmatched+1
如果不是
Numberofunmatched=Numberofunmatched+1
考虑到域名可以更改,电子邮件地址有可变长度。
任何帮助?
答案 0 :(得分:1)
这是另一种读取文本文件的方法。您可以使用System.IO.File
class,例如File.ReadLines
/ File.ReadAllLines
或File.ReadAllText
。
使用String.Split
获取String()
,每列一个字符串。由于分隔符似乎是,
而不是"
使用String.Split(","c)
。
您可以使用以下LINQ查询来提高可读性:
Dim allLines = File.ReadAllLines("Path")
Dim data = From line In allLines.Skip(1) ' skip the header-line
Where Not String.IsNullOrWhiteSpace(line)
Let fields = line.Split(","c)
Where fields.Length = 6
Select fields
Dim Numberofmatched As Int32 = data.Count(Function(fields) fields(1) = fields(5))
Dim Numberofunmatched As Int32 = data.Count(Function(fields) fields(1) <> fields(5))
请注意,您应该使用可用的CSV解析器而不是重新发明轮子,因为它们支持引用字符和许多其他内容。 Visual Basic基础名称空间中值得推荐的是TextFieldParser
类。