2017-06-21 94 views
0

我想只替換1個字符串,但是會發生什麼情況是它會替換所有匹配的字符串。Vb6查找替換代碼

我從列表1(列表框)中選擇了球並查找並替換了它在text1上的值,它查找了text1中的值,但其他類似名稱球的字符串也被更改了。

我有一個列表1
我有text1.text多

列表1關鍵字
地面
游泳
斯諾克

詹姆斯

text1.text
條徒步旅行者

巴拉
牛仔褲

正在使用

If Text1.Text = list1.Text Then 
Text1 = Replace(Text1.Text, list1.Text, Text9.Text) 
end if 

我試圖做精確的關鍵字替換在這裏,但我不這樣做。

我試圖更換球只,但它取代所有匹配的關鍵字一起

球只應替換,但巴拉也歌廳更換

+0

我不得不在這裏作出一些假設:是「列表1」列表框,你在列表中選擇的一個值(即'球')?你唯一的問題就是'Text1'中的字符串'Ball'和'Balla'正在被替換,還是還有其他一些問題?對於'Ball/Balla',你需要分隔搜索字符串。你說'multilinje',那麼這是否意味着換行或CRLF在每個單詞的末尾?你想要替換一個部分字(即改變夜間白天)? –

+0

我有list1這是與字符串球的列表框我現在做簡單的替換方法在text1上,它取代了text1中的字符串,但其他類似的字符串Ball Balla也被替換,我只想替換選定的值 –

+0

正如我前面所述,你需要分隔搜索。你沒有回答我的問題重新CRLF或你的多行是如何分隔的。 –

回答

0

RegExp是極好的抓整個單詞,而不需要指定任何特定的邊界。如果要使用此功能,試試這個:

Function ReplaceWholeWord(sText As String, sFind As String, sReplace As String) 
    With CreateObject("VBScript.Regexp") 
    .MultiLine = True: .Global = True 
    .Pattern = "\b" & sFind & "\b" 
    ReplaceWholeWord = .Replace(s, sReplace) 
    End With 
End Function 

Sub Test() 
    Dim s As String 
    s = "hiker " & vbCrLf & "Ball 123" & vbCrLf & "Balla" & vbCrLf & "Ball" & vbCrLf & "foobar" 
    Debug.Print ReplaceWholeWord(s, "Ball", "Crystal") 
End Sub 
+0

debug.print顯示輸出爲腳踏板現在確定這是做什麼,它是用腳踏板代替球? –

+0

@RobRob它用「水晶」代替整個單詞「球」。「foobar」只是最後一行,它保持不變。只有'Ball'這個詞出現的兩個被替換。它被測試:) –

+0

我可以使用這在text1上加載了很多的html代碼,然後使用這個代碼來查找和替換,我會改變。 –