Vous pouvez faire un remplacement avec une expression régulière en utilisant un modèle avec le marqueur \b
(pour la limite de mot) avant et après le mot que vous voulez remplacer.
Public Function RegExpReplaceWord(ByVal strSource As String, _
ByVal strFind As String, _
ByVal strReplace As String) As String
' Purpose : replace [strFind] with [strReplace] in [strSource]
' Comment : [strFind] can be plain text or a regexp pattern;
' all occurences of [strFind] are replaced
' early binding requires reference to Microsoft VBScript
' Regular Expressions:
'Dim re As RegExp
'Set re = New RegExp
' with late binding, no reference needed:
Dim re As Object
Set re = CreateObject("VBScript.RegExp")
re.Global = True
're.IgnoreCase = True ' <-- case insensitve
re.pattern = "\b" & strFind & "\b"
RegExpReplaceWord = re.Replace(strSource, strReplace)
Set re = Nothing
End Function
Comme écrit, la recherche est sensible à la casse. Si vous voulez insensible à la casse, activez cette ligne:
re.IgnoreCase = True
Dans la fenêtre immédiate ...
? RegExpReplaceWord("one too three", "too", "two")
one two three
? RegExpReplaceWord("one tool three", "too", "two")
one tool three
? RegExpReplaceWord("one too() three", "too", "two")
one two() three
? RegExpReplaceWord("one too three", "to", "two")
one too three
? RegExpReplaceWord("one too three", "t..", "two")
one two three
... et pour votre gamme de délimiteurs ...
? RegExpReplaceWord("one.too.three", "too", "two")
one.two.three
? RegExpReplaceWord("one,too,three", "too", "two")
one,two,three
? RegExpReplaceWord("one;too;three", "too", "two")
one;two;three
? RegExpReplaceWord("one:too:three", "too", "two")
one:two:three
? RegExpReplaceWord("one/too/three", "too", "two")
one/two/three
? RegExpReplaceWord("one?too?three", "too", "two")
one?two?three
? RegExpReplaceWord("one--too--three", "too", "two")
one--two--three
? RegExpReplaceWord("one***too***three", "too", "two")
one***two***three
Le problème est que vous ne pouvez pas définir les règles sous lesquelles cela fonctionnerait. Il y a trop de variations/permutations. En conséquence, aucun ensemble de logique ne peut le faire correctement. Le mieux que vous pouvez espérer est un processus qui signalerait ceux qui ont besoin d'un examen humain; vérifiez ceux que vous voulez mettre à jour, puis laissez le système se mettre à jour après l'examen manuel. Sinon, vous allez développer une IA pour gérer les permutations. – xQbert
ce n'est pas vraiment vrai, tout d'abord, MS le fait déjà (vous pouvez rechercher des mots entiers) et deuxièmement, je peux arriver à une liste de combinaisons et ensuite exécuter chacun de mes 300 mots avec chaque ensemble. J'essaie vraiment d'éviter cela mais c'est 100% possible. Une autre chose que je peux faire est d'exécuter un remplacement qui remplacera tous les caractères avec un espace et ensuite remplacer mes 300 mots s'ils sont entourés d'espaces. donc il y a des façons de le faire, j'essaie juste de trouver la meilleure façon de le faire. Je dois croire qu'il existe des moyens de rechercher des mots entiers. Je vous remercie!! – lalachka
J'ai déjà un code qui me donnera toutes les permutations de 2 de n'importe quel nombre de moins de 9. J'essaie juste vraiment d'éviter de passer par là. – lalachka