代码之家  ›  专栏  ›  技术社区  ›  user1946932

.Net正则表达式在所有字符前添加空格

  •  0
  • user1946932  · 技术社区  · 1 年前

    如何在每一个空格之前添加空格 & - 字符,如果还没有?

    我一直在网上寻找如何在替换值中保留原始字符:

    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
    

    PS:之后,我想为以下内容创建单独的函数,但希望我能使用类似的代码来解决这些问题:

    Function fSpaceTrailingAdd()
    'Follow : ; , & with a single space if none there
    

    Function fSpaceTrailingRemove() 
    'Remove any spaces after $ “ ‘ ( [ {
    
    1 回复  |  直到 1 年前
        1
  •  3
  •   FJones    1 年前

    您需要Regex吗?

    您只需使用String.Replace即可完成此操作,方法是删除任何现有空格,然后将空格添加到所有空格中。

    strRes = strInput.Replace(" &", "&").Replace("&"," &")
    

    两者&;和-可以用一个表达式完成。

    strRes = strInput.Replace(" &", "&").Replace("&"," &").Replace(" -", "-").Replace("-"," -")
    

    您的其他功能也可以通过相同的方式完成。

    如果需要,使用Regex可以处理多个空格的情况。使用String.Replace需要一个循环。*去掉了前面的多个空格。

    strRes = Regex.Replace(strInput, " *&", "&").Replace("&", " &")
    strRes = Regex.Replace(strRes, " *-", "-").Replace("-", " -")
    
        2
  •  0
  •   DuesserBaest    1 年前

    作为一个正则表达式,你可以尝试:

    (?=(?<!\s)[&-])
    

    并替换为单个空格: .

    请参阅: regex101


    解释

    • (?= ... [&-]) :找到所有你找到“&”或“-”的位置。。。
      • (?<!\s) :在此之前没有空间
    推荐文章