2014-12-14 3 views
0

Я создаю программу, у меня проблема с моим списком, потому что в этом списке моя программа хранит файл, от разбора json, но мне не нужны все эти файлы, поэтому я хочу удалить его из список. Мой код:Как удалить строку из списка?

For i = 0 To LibrariesList.Count - 1 
    '//Lwjgl beta disabled:\\' 
    If LibrariesList.Item(i).Contains("org.lwjgl.lwjgl:lwjgl:2.9.1-nightly-20130708-debug3") = True Then 
     LibrariesList.Item(i) = LibrariesList.Item(i).Replace("org.lwjgl.lwjgl:lwjgl:2.9.1-nightly-20130708-debug3", Nothing) 
    End If 
    If LibrariesList.Item(i).Contains("org.lwjgl.lwjgl:lwjgl_util:2.9.1-nightly-20130708-debug3") = True Then 
     LibrariesList.Item(i) = LibrariesList.Item(i).Replace("org.lwjgl.lwjgl:lwjgl_util:2.9.1-nightly-20130708-debug3", Nothing) 
    End If 
    If LibrariesList.Item(i).Contains("org.lwjgl.lwjgl:lwjgl-platform:2.9.1-nightly-20130708-debug3") = True Then 
     LibrariesList.Item(i) = LibrariesList.Item(i).Replace("org.lwjgl.lwjgl:lwjgl-platform:2.9.1-nightly-20130708-debug3", Nothing) 
    End If 
    '//Lwjgl 2.9.2-Beta disabled:\\' 
    If LibrariesList.Item(i).Contains("org.lwjgl.lwjgl:lwjgl:2.9.2-nightly-20140822") = True Then 
     LibrariesList.Item(i) = LibrariesList.Item(i).Replace("org.lwjgl.lwjgl:lwjgl:2.9.2-nightly-20140822", Nothing) 
    End If 
    If LibrariesList.Item(i).Contains("org.lwjgl.lwjgl:lwjgl_util:2.9.2-nightly-20140822") = True Then 
     LibrariesList.Item(i) = LibrariesList.Item(i).Replace("org.lwjgl.lwjgl:lwjgl_util:2.9.2-nightly-20140822", Nothing) 
    End If 
    If LibrariesList.Item(i).Contains("org.lwjgl.lwjgl:lwjgl-platform:2.9.2-nightly-20140822") = True Then 
     LibrariesList.Item(i) = LibrariesList.Item(i).Replace("org.lwjgl.lwjgl:lwjgl-platform:2.9.2-nightly-20140822", Nothing) 
    End If 
Next 

librarieslist в списке, но мой код не удалить полностью строку, индекс строки не удаляется. Я хочу удалить строку с индексом строки, поэтому библиотекиlist.cont - 1.

Как это сделать?

ответ

2

Предполагая, что фактический список (Of String) используется итерацией назад по списку и использовать RemoveAt():

Dim NotAllowed() As String = { 
     "org.lwjgl.lwjgl:lwjgl:2.9.1-nightly-20130708-debug3", 
     "org.lwjgl.lwjgl:lwjgl_util:2.9.1-nightly-20130708-debug3", 
     "org.lwjgl.lwjgl:lwjgl-platform:2.9.1-nightly-20130708-debug3", 
     "org.lwjgl.lwjgl:lwjgl:2.9.2-nightly-20140822", 
     "org.lwjgl.lwjgl:lwjgl_util:2.9.2-nightly-20140822", 
     "org.lwjgl.lwjgl:lwjgl-platform:2.9.2-nightly-20140822" 
    } 

    For i As Integer = LibrariesList.Count - 1 To 0 Step -1 
     For Each entry As String In NotAllowed 
      If LibrariesList(i).Contains(entry) Then 
       LibrariesList.RemoveAt(i) 
       Exit For 
      End If 
     Next 
    Next 
+1

Да, применяет [DRY] (https: // эн. wikipedia.org/wiki/Don't_repeat_yourself). В исходном коде много повторений. Все версии обрабатываются индивидуально, и длинная строка версии появляется дважды каждый раз (в состоянии и в удалении). –

+0

Спасибо большое! Ты решил мою большую проблему! –

Смежные вопросы