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

VB.NET使用Regex移除掩码文本框字符串中空格失效问题咨询

问题原因

你定义的正则" "仅能匹配ASCII码为32的普通半角空格,而掩码文本框中40和°之间的空白字符大概率是以下类型,无法被当前正则命中:

  • 输入度数符号时输入法连带输入的不间断空格(Unicode编码U+00A0,ASCII码160)
  • 全角空格(Unicode编码U+3000,ASCII码12288)
  • 其他特殊空白占位符

修复方案

方案1:修改正则匹配所有空白字符(推荐)

用正则元字符\s匹配所有类型的空白字符,加+可以一次性替换连续多个空白,效率更高:

' 初始化正则,匹配所有空白字符,开启编译提升重复调用性能
Dim regSpace As New Regex("\s+", RegexOptions.Compiled)

原有写入逻辑无需修改即可正常生效。

方案2:精准匹配指定空格类型

如果你不需要删除换行、制表符等其他空白,可以明确指定要匹配的空格类型:

' 分别匹配普通半角空格、不间断空格、全角空格
Dim regSpace As New Regex("[ \u00A0\u3000]", RegexOptions.Compiled)

方案3:不用正则,直接字符串替换(性能最优)

如果仅需删除空格类字符,直接调用字符串替换方法性能更高:

If msktxt_InsOrientationV.Text <> "" Then
    Dim processedText = msktxt_InsOrientationV.Text _
        .Replace(" ", String.Empty) _
        .Replace(ChrW(160), String.Empty) _
        .Replace(ChrW(12288), String.Empty)
    txtfile.WriteLine(processedText)
Else
    Error_Handler("Error") 'generates a message box
End If

调试技巧

如果上述方案仍不生效,可以先输出空白字符的编码确认类型:

' 取示例文本中40后面的第一个字符(索引为2)
Dim targetChar = msktxt_InsOrientationV.Text.Chars(2)
MessageBox.Show($"空白字符编码:{AscW(targetChar)}")

根据输出的编码补充匹配规则即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 09:15:03