2017-05-26 19 views
-3

を使用して、重複する項目を削除します。私は次を含むテキストファイルを持っているインデックス

"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

C#でこれが必要ですか、そのタグは何ですか? –

+0

VB.NETを使用している場合、なぜC#にタグを付けましたか? –

+0

C#またはvb.netはどちらもOKです – jeon

答えて

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()) 

をしかし、私はthiseフィールドはコンマ自体が含まれていることはありません願っています。実際には、代わりにTextFieldParserのような文字の引用をサポートするCSVパーサーを使用する必要があります。

+0

あなたのコードは魅力のように動作します!ありがとう – jeon

+0

@jeon:それを受け入れることを検討 –

関連する問題