Заменить переменную строку в VBA - PullRequest
6 голосов
/ 04 мая 2011

Мне нужно заменить что-то в строке, но то, что заменить, может отличаться.Это может быть

XY - test
XXxY-test
XXyyXx-TEST
yXyy     -Test

и фактически любая другая комбинация пробелов и перечисленных выше случаев.

Мне нужно заменить часть "-test" и оставить "XXX" в покое.Таким образом, при использовании простой замены

Replace("XXX  -test", "- test", "")

Это не сработает, очевидно.Поэтому мне нужна более сложная версия Replace, которая могла бы справиться с этой задачей.Есть ли что-то, что я мог бы использовать, или я должен написать это самостоятельно?

Ответы [ 3 ]

8 голосов
/ 04 мая 2011

Если вам нужна большая гибкость, чем та, которую обеспечивает метод mj82 (например, вы можете не знать длину исходного выражения), вы можете использовать регулярное выражение.Например:

Regex.Replace("XXX  -test", "\s*-\s*test", "", RegexOptions.IgnoreCase)
8 голосов
/ 26 июля 2011

Это комплимент ответа егьяла. Это функция регулярного выражения VBA, так что вы можете использовать его ответ. Вы заметите, что я добавил ignore_case в качестве опции для гибкости, поэтому ваш вызов будет:

=RegexReplace(cell, "\s*-\s*test", "", TRUE)

Вот функция, надеюсь, вы найдете ее полезной:

' -------------------------------------------------------------------
' Search and Replace using a regular expression
' -------------------------------------------------------------------

Function RegexReplace(ByVal text As String, _
                      ByVal replace_what As String, _
                      ByVal replace_with As String, _
                      Optional ByVal ignore_case As Boolean = False) As String

Dim RE As Object
Set RE = CreateObject("vbscript.regexp")

RE.ignorecase = ignore_case
RE.pattern = replace_what
RE.Global = True
RegexReplace = RE.Replace(text, replace_with)

End Function
1 голос
/ 04 мая 2011

Если XXX стоит первым, вы можете использовать функцию Left (string; 3), чтобы вырезать 3 (или любую нужную вам длину) буквы с левой стороны, тогда вам все равно, что после этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...