2016-04-24 46 views
1

我正在尝试使一个小的VB程序从纯文本中删除重复的行和空行。
我有RichTextBox输入,但最终我不知道什么类型的返回对象是,它是一个数组或列表也许?RichTextBox输出和删除重复项的类型

而且我试图找到最有效的方法来移除大纯文本(S)重复的线条,在Python我做这种方式:

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

既然你不能有两次相同键,没有重复被保留在lines_nodupes dictionnary中,我可以枚举它来访问这些行。

回答

1

有两个属性,你可以使用:

  1. Lines将返回字符串
  2. 数组
  3. Text将返回整个文本字符串

RichTextBox从MSDN

如果你想像Python那样做:

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 

你也可以做(如由VisualVincent在评析建议):

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 

这是一个慢一点,但差别不会被看到,除非你有一个很长的产品清单。

+0

为什么使用字典?使用'List(Of T)'并检查'.Contains()'。 –

+1

因为我认为字典在搜索字符串方面会更有效率...'List.Contains()'会比较每个项目并在O(N)中运行,而字典将检查Hashcode并在最差的O (N) –

+0

点,但'.Contains()'迭代不会花费很长时间,除非列表是_extremely_ long。 –