групповые дубликаты с количеством - PullRequest
0 голосов
/ 06 мая 2011

Мне нужно просмотреть список строк и подсчитать количество дубликатов, а затем распечатать строку с количеством вхождений в одной строке в файл. Вот что у меня есть, но мне нужно всего лишь напечатать строку и ее количество.

    Do
        line = LineInput(1)
        Trim(line)
        If line = temp Then
            counter += 1
        Else
            counter = 1
        End If
        temp = line
        swriter.WriteLine(line & " " & counter.ToString)
        swriter.Flush()

    Loop While Not EOF(1)

Мой мозг просто не функционирует сегодня ..

Ответы [ 2 ]

2 голосов
/ 06 мая 2011

Вы также можете использовать LINQ:

Dim dups = From x In IO.File.ReadAllLines("TextFile1.txt") _
              Group By line Into Group _
              Where Group.Count > 1 _
              Let count = Group.Count() _
              Order By count Descending _
              Select New With { _
                  Key .Value = x, _
                  Key .Count = count _
              }

For Each d In dups
    swriter.WriteLine(String.Format("duplicate: {0} count: {1}", d.Value, d.Count))
    swriter.Flush()
Next
1 голос
/ 06 мая 2011

Вы, вероятно, должны использовать что-то вроде Dictionary для подсчета строк.

Dim dict As New Dictionary(Of String, Integer)
Do
  line = LineInput(1)
  line = Trim(line)
  If dict.ContainsKey(line) Then
     dict(line) += 1
  Else
     dict.Add(line, 1)
  End If
Loop While Not EOF(1)

И затем распечатать элементы в словаре

For Each line As String In dict.Keys
  swriter.WriteLine(line & " " & dict(line))
  swriter.Flush()
Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...