我需要在字符串中替换somethin,但替换的内容可能会有所不同。它可以是
XY - test
XXxY-test
XXyyXx-TEST
yXyy -Test
以及上述空格和案例的几乎任何其他组合。
我需要更换“-test”部分并单独留下“XXX”。所以,当使用简单的替换
Replace("XXX -test", "- test", "")
显然,它不会起作用。所以我需要一个更复杂的Replace版本来处理这个任务。有什么我可以使用或者我必须自己写吗?
答案 0 :(得分:8)
如果您需要比mj82方法提供的更多灵活性(例如,您可能不知道初始表达式的长度),则可以使用正则表达式。例如:
Regex.Replace("XXX -test", "\s*-\s*test", "", RegexOptions.IgnoreCase)
答案 1 :(得分:8)
这是为了赞美eggyal的答案。这是一个VBA regexreplace函数,以便您可以使用他的答案。您会注意到我添加了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
答案 2 :(得分:1)
如果XXX是第一个,你可以使用Left(string; 3)函数tu cut 3(或你需要的任何长度)来自左侧的字母,然后你不关心它后面是什么。