我的文本文件包含以下内容:
"hello", "say hello"
"hello", "say hi"
"hi", "say hi"
"hi", "good morning"
我想只检查每对重复的第一个值,如果找到重复则删除该对。
我想要前一组对的结果:
"hello", "say hello"
"hi", "say hi"
我尝试使用以下代码,但结果不是我想要的。
Dim SR As New StreamReader("file.txt")
Dim MyArray As New List(Of string)
Dim strLine() As String
Do While SR.Peek <> -1
strLine = SR.ReadLine().Split(","c)
If MyArray.Contains(strLine(0)) = False Then
MyArray.Add(strLine(0) & "," & strline(1))
End If
Loop
如果有人能够启发我会非常感激!
答案 0 :(得分:1)
您可以使用LINQ实现这一点:
Dim distinctByFirstColumn = From line In File.ReadLines("file.txt")
Let fields = line.Split(","c)
Let firstField = fields(0).Trim()
Group line by firstField Into firstFieldGroup = Group
Select firstFieldGroup.First() ' you want first line of duplicates
如果要重写文件:
File.WriteAllLines("file.txt", distinctByFirstColumn.ToList())
但我希望这个领域永远不会包含逗号。您应该使用支持引用字符的csv解析器,而不是TextFieldParser
。