首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从字符串中删除\u00A0字符

从字符串中删除\u00A0字符
EN

Stack Overflow用户
提问于 2017-04-25 12:21:15
回答 1查看 5.8K关注 0票数 1

我在一个单元格中有以下字符串:

我想将字符串拆分成一个数组,该数组只包含文本单词(如'CRMNegocios'),没有任何符号、新行等.

为此,我编写了以下代码:

代码语言:javascript
运行
复制
Sub Button1_Click()

    Dim stringsToCheck As Variant
    Dim element As Variant
    Dim stripped As String

    'Split cell value per vbLf
    stringsToCheck = Split(Cells(42, 10).Value, vbLf)
    MsgBox ("Total length of stringsToCheck is " & CStr(UBound(stringsToCheck)))

    'Remove special characters - for testing only, it will set the cell with the last value of the array
    For Each element In stringsToCheck
        stripped = GetStrippedText(CStr(element))
        Cells(42, 15) = stripped
    Next element


End Sub

Private Function GetStrippedText(txt As String) As String
    Dim regEx As Object

    Set regEx = CreateObject("vbscript.regexp")

    '\u0000-\u007F is for other special characters
    regEx.Pattern = "[\u25A0\u00A0\u0000-\u007F]"
    GetStrippedText = regEx.Replace(txt, "")

End Function

该项目如预期的那样被删除(它是\u25A0),但我仍然保留在文本单词之前的\u00A0字符:

我已经检查过和regex匹配,为什么它没有在VBA中删除?

如评论中所述,单元格中的原文:

代码语言:javascript
运行
复制
■         CRMNegocios
■         GestiondeProyectos
■         Emblue
■         Videoconferencia

测试单元格中的文本,代码运行后:

成本-成本-商业

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-25 12:40:19

我建议使用"^[\u25A0\u00A0\s]+"删除所有的标准空格、不间断空格和要点。它符合:

  • ^ -字符串的开始
  • [\u25A0\u00A0\s]+ -1或更多次出现:
    • \u25A0 -子弹点
    • \u00A0 -非破缺空间
    • \s - [ \r\t\n\f]空格

您的正则表达式不是全局匹配的,所以在匹配和删除第一个要点之后,它就停止了。然后,regex还包含定义所有ASCII字符的u0000-\u007F范围。如果按原样使用,在Replace中,它将从字符串中删除所有的ASCII字母、数字、所有ASCII符号。这就是为什么在添加.Global = True以匹配所有事件时删除文本的原因。

请注意,如果您只处理ASCII文本,并且需要从字符串开始删除任何非单词字符,则可以使用regEx.Pattern = "^\W+" (不需要将.Global设置为True)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43610513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档