Найти и заменить с помощью Listbox Vb.net - PullRequest
2 голосов
/ 15 сентября 2011

хорошо, у меня есть список из 84000 слов, и у меня есть несколько статей в этих статьях. Я хочу заменить первое вхождение каждого слова, которое есть в списке, например,

  For Each item In ListBox1.Items
    Dim mytext As String = "My some text this text is very long text and i want to replace this"
    If ListBox1.Items.Contains(mytext) Then
        mytext = Replace(mytext, mytext, "String to replace",Count:=1)
    End If
Next

но раньше он заменял весь mytext, я хочу заменить слова в mytext, а также зависал в системе и очень-очень медленно, помогите или идея, пожалуйста

1 Ответ

2 голосов
/ 15 сентября 2011

Похоже, вы хотите заменить все на одну и ту же строку, но приведенный ниже код легко адаптируется к другим случаям, но сейчас я пойду с этим.

Для упрощения я предполагаю, что вы хотите заменить слова, и слова разделяются только пробелами ('').

Сначала создайте словарь из элементов списка:

dim dict = ListBox1.Items.Cast(of object).ToDictionary(function(x) x.ToString())

Тогда возьми себе все слова:

dim words = mytext.Split(New [Char](){" "c});

и преобразование слова:

dim replaceWith = "your replacement";
dim mapWords as Func(of string,string) = _
   function(word) IIf(dict.ContainsKey(word), replaceWith, word)

затем преобразуйте слова и соедините их снова с помощью '':

dim result = String.Join(" ", words.Select(function(word) mapWords(word)))

и вам пора.

Если вы хотите заменить отдельными словами, просто замените значения словарей и переключите функцию mapWords с помощью

dim mapWords as Func(of string,string) = _
   function(word) IIf(dict.ContainsKey(word), dict(word), word)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...