如果还没有空格,我该如何在每个字符前添加一个空格&
?-
我一直在互联网上寻找尝试如何在替换值中保留原始字符:
Private Function fPhraseSpacesLeadingAdd() As String
Dim strClsPhrase As String = "Cobb& Co is nice. Also so is M& Sheer and B- Cafe."
'Desired output: "Cobb & Co is nice. Also so is M & Sheer and B - Cafe."
Dim strReturn As String = strClsPhrase
Dim strItems = New String() {"&", "-"}
For Each strItem As String In strItems
Dim rg1 As New Regex("." + strItem)
strReturn = rg1.Replace(strReturn, "\1 " + strItem)
Next
Return strReturn
End Function
附言:之后我想为以下内容创建单独的函数,但希望我可以使用类似的代码来解决这些问题:
Function fSpaceTrailingAdd()
'Follow : ; , & with a single space if none there
和
Function fSpaceTrailingRemove()
'Remove any spaces after $ “ ‘ ( [ {
您需要正则表达式吗?
您可以使用 String.Replace 轻松完成此操作,方法是删除所有现有空格,然后将空格添加到所有空格。
& 和 - 都可以用一个表达式来完成。
您的附加功能可以通过同样的方式实现。
如果需要,您可以使用 Regex 处理多个空格的情况。使用 String.Replace 则需要一个循环。* 可以删除前面的多个空格。
作为单个正则表达式,您可以尝试:
并用一个空格替换:
。
参见:regex101
解释
(?= ... [&-])
:查找所有以“&”或“-”结尾的位置...(?<!\s)
: 并且之前没有空格您可以匹配任一
&
或-
并使用负向后视断言其前面没有空格。如果你想匹配一个空格字符(也可以匹配换行符),你可以使用
\s
在替换中使用空格,后跟完整匹配。
查看regex101 演示和VB.NET 演示