从单元格中仅删除单个空格

时间:2019-05-05 15:21:13

标签: regex excel vba

我正在使用正则表达式来识别单词之间的单个空格,并将其替换为下划线。 1.例如,说F1的值为“公司名称机构名称”。 2.注意公司名称和机构名称之间的空格。 3.但是,两个字段之间用多个空格隔开

使用以下代码解决此问题。

DataSource.Factory

但是,这导致Value为“ y_name e_f_Institution”,在空格前需要1个字符。 我们如何更改代码以产生“ company_name Name_of_institution”

3 个答案:

答案 0 :(得分:1)

在模式中,您使用(\w)+
我不确定细节,但是$1仅保留该组的最后一次捕获(最后一个字母)。
尝试简单地使用(\w+)。这会将完整的单词放入此捕获组,并使其重新出现在$1

答案 1 :(得分:0)

如果您很乐意避免使用Regex,那么此方法应该对您有用。

Public Sub RetrieveText()
    Dim strText As String, strCompany As String, strInstitution As String

    strText = "Company Name  Name of Institution"

    strCompany = Split(strText, "  ")(0)
    strInstitution = StrReverse(Split(StrReverse(strText), "  ")(0))

    Debug.Print strCompany
    Debug.Print strInstitution

    ' ... or this ...
    strCompany = Trim(Mid(strText, 1, InStr(1, strText, "  ")))
    strInstitution = Trim(Mid(strText, InStr(1, strText, "  ")))

    Debug.Print strCompany
    Debug.Print strInstitution
End Sub

...这是另一种选择,至少可以简化它,至少对我有用。 :-)正则表达式功能强大,但很多人很难理解,可能要考虑到它的解决方案。

无论如何,由您决定!

答案 2 :(得分:0)

    rx.Pattern = "(\w+) (?=\w)" ' match two or more spaces
    rx.Global = True ' find all, not only the first match
    t = rx.Replace(s, "$1_")

正在回答,其他正在寻找类似情况的人。