You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET正则表达式:如何在&和-前自动添加缺失的前置空格

VB.NET 字符串空格处理解决方案

1. 在&和-前添加缺失的前置空格(fPhraseSpacesLeadingAdd)

原代码的问题在于正则未设置有效捕获组,且会错误匹配已带空格的场景。正确思路是仅匹配**非空格字符紧跟&/-**的情况,通过捕获组保留前置字符后补空格。

修正后的代码:

Private Function fPhraseSpacesLeadingAdd() As String
    Dim strClsPhrase As String = "Cobb& Co is nice. Also so is M& Sheer and B- Cafe."
    ' 预期输出: "Cobb & Co is nice. Also so is M & Sheer and B - Cafe."

    Dim strReturn As String = strClsPhrase
    ' 正则捕获非空格字符+目标符号的组合
    Dim regex As New Regex("([^\s])([&-])")
    ' 替换为「前置字符 + 空格 + 目标符号」
    strReturn = regex.Replace(strReturn, "$1 $2")

    Return strReturn
End Function

说明:[^\s]匹配任意非空格字符并捕获为$1,[&-]匹配目标符号并捕获为$2,替换时自动跳过已带空格的场景,避免重复添加。

2. 在: ; , &后添加缺失的后置空格(fSpaceTrailingAdd)

核心是仅给无后置空格的目标符号补空格,通过负向预查排除已带空格的情况。

实现代码:

Private Function fSpaceTrailingAdd(input As String) As String
    ' 匹配目标符号后面无空格的场景
    Dim regex As New Regex("([:;,&])(?!\s)")
    ' 替换为「目标符号 + 空格」
    Return regex.Replace(input, "$1 ")
End Function

说明:(?!\s)是负向预查,确保符号后面没有空格,只会对缺失空格的场景进行补充。

3. 移除$ “ ‘ ( [ {后的所有空格(fSpaceTrailingRemove)

需要匹配目标符号后的一个或多个空格,替换时仅保留符号本身。

实现代码:

Private Function fSpaceTrailingRemove(input As String) As String
    ' 匹配目标符号后面的连续空格
    Dim regex As New Regex("([$""‘(\[{])\s+")
    ' 替换为仅保留目标符号
    Return regex.Replace(input, "$1")
End Function

说明:\s+匹配一个或多个连续空格,捕获组保留目标符号,替换时直接去掉后续空格。

内容的提问来源于stack exchange,提问作者user1946932

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 05:42:44