我需要用:
(冒号空格)替换所有:
(冒号)。我能用替换功能做到这一点。
description_string = Replace(currentSheet.Cells(i, j), ":", ": ")
但这也取代了时间格式(例如16:20
)。我需要识别冒号:
,其中数字为先前值(例如9:
)
我尝试过使用正则表达式
[a-zA-Z]:[a-zA-Z0-9]
作为模式。问题是我将如何仅替换冒号。如果我尝试替换,冒号之前和之后的整个字符都会被替换。
我尝试过查找和替换,但问题出在
这样的字符串上abcd日期:01/01/17 10:18 Des:xyz
所有冒号都变为:
我想要的输出是
abcd日期:01/01/17 10:18 Des:xyz
答案 0 :(得分:1)
尝试使用正则表达式
reg.Pattern = "(\D:)" ' non-digit followed by colon, as group $1
\D
指定非数字字符。 (\ D :)指定一个非数字字符,后跟冒号。括号内,此匹配模式将在以后替换中标识为$1
;因为它是第一个(也是唯一一个)被捕获的组。
然后像这样替换:
newString = reg.Replace(oldString, "$1 ") 'replace captured group by itself then space
将匹配的组($1
)替换为自身,后跟空格:"$1 "
如果模式中只有一个组(例如此组),则可以删除括号并将(仅)捕获的组标识为$+
。
reg.Pattern = "\D:" ' non-digit followed by colon, as the only group ($+)
newString = reg.Replace(oldString, "$+ ")
Sub Example()
Dim reg As New RegExp: reg.Global = True: reg.Pattern = "(\D:)"
Dim oldString As String: oldString = "abcd Date:01/01/17 10:18 Des:xyz"
Dim newString As String: newString = reg.Replace(oldString, "$1 ")
Debug.Print newString
End Sub
abcd Date: 01/01/17 10:18 Des: xyz