ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
12
返回列表 发新帖
楼主: Cavan2022

[求助] VBA 正则表达式 替换网页复制的空白字符,替换不掉

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-10-28 08:37 来自手机 | 显示全部楼层
Cavan2022 发表于 2024-10-27 20:48
[\s] 等价于 [ \f\n\r\t\v],这样不行.
估计是字符集的问题,VBA运行时,网页复制的空白字符,在程序运行时 ...

Sub RemoveNonBreakingSpaces()
    Dim inputString As String
    Dim regex As Object
    Dim cleanedString As String

    ' Example input string with non-breaking spaces
    inputString = "This is an example string with non-breaking space: " & ChrW(&H00A0) & "and here."

    ' Create a new RegExp object
    Set regex = CreateObject("VBScript.RegExp")

    ' Set the pattern to match the non-breaking space character
    regex.Pattern = ChrW(&H00A0)
    regex.Global = True  ' Replace all instances

    ' Perform the replacement
    cleanedString = regex.Replace(inputString, " ")

    ' Output the result
    Debug.Print cleanedString
End Sub


TA的精华主题

TA的得分主题

发表于 2024-10-28 08:43 | 显示全部楼层
先用 AscW 查出ASC码,再用 ChrW 表示

image.png

TA的精华主题

TA的得分主题

发表于 2024-10-28 09:25 | 显示全部楼层
我感觉可以用“\S+”,然后把结果连接起来就可以了。不用替换。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-28 16:25 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
我试了一下,用ChrW()函数的思路可以解决问题,
将Pattern属性设为如下:


regex.Pattern ="[" & ChrW(160) & "\s]"
用这种方式可以替换掉输入的、网页的空白字符,以后再有的话继续添加就可以了.
多谢大家的热心帮助,谢谢!

TA的精华主题

TA的得分主题

发表于 2024-10-28 16:43 | 显示全部楼层
本帖最后由 DevilW 于 2024-10-28 16:44 编辑
Cavan2022 发表于 2024-10-28 16:25
我试了一下,用ChrW()函数的思路可以解决问题,
将Pattern属性设为如下:

正则的话用八进制转换ASC码即可, \240  ,注意不要和捕获括号混用,如果  \240  前面有两个捕获括号则 \2 代表第二个捕获结果

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-28 20:54 | 显示全部楼层
DevilW 发表于 2024-10-28 16:43
正则的话用八进制转换ASC码即可, \240  ,注意不要和捕获括号混用,如果  \240  前面有两个捕获括号则 \2 ...

不是很明白,比如这个例子,要捕获ChrW(160)这个空白字符,还有其他输入的空白字符\s, 完整的Pattern表达式该怎么写?

TA的精华主题

TA的得分主题

发表于 2024-10-28 20:57 | 显示全部楼层
Cavan2022 发表于 2024-10-28 20:54
不是很明白,比如这个例子,要捕获ChrW(160)这个空白字符,还有其他输入的空白字符\s, 完整的Pattern表达式 ...

regx.pattern="\s|\240"

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-28 21:45 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-22 07:03 , Processed in 0.033932 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表