在vb.net中检查每行中的数据类型
我想知道如何检查在vb.net中检查每行中的数据类型,.net,vb.net,parsing,types,.net,Vb.net,Parsing,Types,我想知道如何检查inputfile每行的第一个字母是什么类型的数据(整数/字符)。 我没能找到什么东西来回答我的问题,特别是因为我不知道我该如何寻找这个 例如,在我的inputfile中是这样构建的: Birthdate;Name 19920711;John 19801106;Alex 19950327;Sam 现在我只想过滤掉没有名字和标题的日期。这怎么可能 您可以使用Char.IsDigit和或Char.islitter 例如: Using sr As New StreamReader("
inputfile
每行的第一个字母是什么类型的数据(整数/字符)。我没能找到什么东西来回答我的问题,特别是因为我不知道我该如何寻找这个 例如,在我的
inputfile中
是这样构建的:
Birthdate;Name
19920711;John
19801106;Alex
19950327;Sam
现在我只想过滤掉没有名字和标题的日期。这怎么可能 您可以使用
Char.IsDigit
和或Char.islitter
例如:
Using sr As New StreamReader("c:\myfile")
Do Until sr.EndOfStream
Dim line = sr.ReadLine
If line.Length > 0 Then
If Char.IsLetter(line(0)) Then
Debug.WriteLine("First char is a letter")
ElseIf Char.IsNumber(line(0)) Then
Debug.WriteLine("First char is a number")
End If
End If
Loop
End Using
您可以使用以下使用
Char.IsDigit
和DateTime.TryParseExact
的LINQ查询:
var linesWithoutHeader = File.ReadLines(path)
.Select(line => line.Trim())
.SkipWhile(line => line.Length == 0 || !Char.IsDigit(line[0]));
DateTime birthDate = DateTime.MinValue;
List<DateTime> birthDateList = linesWithoutHeader
.Where(line => line.Contains(';'))
.Select(line => line.Remove(line.IndexOf(';')))
.Where(dateStr => DateTime.TryParseExact(dateStr, "yyyyMMdd", null, DateTimeStyles.None, out birthDate))
.Select(dateStr => birthDate)
.ToList();
var linesWithoutHeader=File.ReadLines(路径)
.Select(line=>line.Trim())
.SkipWhile(line=>line.Length==0 | | |!Char.IsDigit(line[0]);
DateTime birthDate=DateTime.MinValue;
List birthDateList=linesWithoutHeader
.Where(line=>line.Contains(“;”))
.Select(line=>line.Remove(line.IndexOf(“;”))
.Where(dateStr=>DateTime.TryParseExact(dateStr,“yyyyMMdd”,null,datetimestyle.None,out birthDate))
.Select(dateStr=>birthDate)
.ToList();