2016-04-24 14 views
1

Ich versuche, ein kleines VB-Programm zu machen, doppelte Zeilen und leere Zeilen aus dem Klartext zu entfernen.
Ich habe die RichTextBox-Eingabe, aber schließlich weiß ich nicht, was der Typ des zurückgegebenen Objekts ist, ist es ein Array oder eine Liste vielleicht?RichTextBox Art der Ausgabe und Entfernen von Duplikaten

lines_nodupes = {} 
for elt in lines : 
lines_nodupes[elt] = "" 

Da kann man nicht zweimal die gleiche:

Auch doppelte Zeilen aus großen Klartext (n) zu entfernen, in Python ich es auf diese Weise Ich versuche, den effizientesten Weg zu finden Schlüssel, keine Duplikate werden in den line_nodupes Dictionnary gehalten und ich kann es aufzählen, um auf die Zeilen zuzugreifen.

Antwort

1

Es gibt zwei Eigenschaften können Sie:

  1. Lines ein Array von Strings zurück
  2. Text den gesamten Text als String zurück

Siehe RichTextBox von MSDN

Wenn Sie wie in Python tun möchten:

Dim noDup as new Dictionary(Of String, String) 

For Each line in MyRichTextBox.Lines 
    if not noDup.ContainsKey(line) then 
     noDUp.add(line, "") 
    End if 
Next 

Sie können auch tun (wie durch VisualVincent in den coments vorgeschlagen):

Dim noDup as new List(Of String) 

For Each line in MyRichTextBox.Lines 
    if not noDup.Contains(line) then 
     noDUp.add(line) 
    End if 
Next 

, die ein bisschen langsamer, aber Unterschied zu sehen ist nicht der Fall, wenn Sie eine sehr lange Liste von Elementen haben.

+0

Warum ein Wörterbuch verwenden? Verwenden Sie eine 'List (Of T)' und überprüfen Sie '.Contains()'. –

+1

Weil ich denke, ein Dictionary wird effizienter in Bezug auf die Suche der Zeichenfolge sein ... 'List.Contains()' wird jedes Element vergleichen und läuft in O (N), während ein Wörterbuch Hashcode überprüft und im schlimmsten Fall in O läuft (N) –

+0

Punkt, aber die '.Contains()' Iteration dauert nicht lange, es sei denn, die Liste ist _extremely_ long. –

Verwandte Themen