确定有一个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中的单词而且它挂起系统非常慢,请帮助或想法
答案 0 :(得分:2)
看起来你想要用相同的字符串替换所有内容,但下面的代码很容易适应其他情况,但我现在一直使用它。
为了简化我假设你想要替换单词而单词只用空格分隔('')。
首先从列表框中的项目中创建一个字典:
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)