无法替换字符串中的vbTab字符,请求技术解决方案
解决VB.NET中替换制表符(vbTab)为下划线的问题
问题根源
你代码里的核心错误是把"vbTab"当成了制表符的代表,但实际上vbTab是VB.NET的内置常量,对应实际的制表符字符,而字符串"vbTab"只是普通文本,和你要替换的制表符完全不是一回事,所以循环根本没处理到真正的制表符。
修正方案
方案1:修正原代码的列表元素
把列表里的"vbTab"替换为vbTab常量,这样就能正确匹配到制表符:
Dim BuildAddr As String = "1050 N DAY MIAR RD" & vbTab & "GRAND PRAIRIE" & vbTab & "TX" ' 用vbTab常量代替字符串"vbTab" Dim lst As New List(Of String) From {vbTab, "/", "\", "^", "@"} For Each Item As String In lst BuildAddr = BuildAddr.Replace(Item, " ") Next ' 最后把所有空格替换为下划线 BuildAddr = BuildAddr.Replace(" ", "_") Return BuildAddr
方案2:直接替换为下划线(更高效)
可以跳过转空格的步骤,直接把所有目标字符(包括制表符、空格和非法符号)替换为下划线,减少一次字符串操作:
Dim BuildAddr As String = "1050 N DAY MIAR RD" & vbTab & "GRAND PRAIRIE" & vbTab & "TX" ' 定义需要替换的字符数组,包含制表符、空格和非法符号 Dim charsToReplace As Char() = {vbTab, " "c, "/", "\", "^", "@"} ' 遍历每个字符,匹配到目标字符就替换为下划线 BuildAddr = New String( BuildAddr.Select(Function(c) If(charsToReplace.Contains(c), "_"c, c)).ToArray() ) Return BuildAddr
额外说明
如果你的字符串里还有其他空白字符(比如换行符、全角空格),可以把vbCr、vbLf、vbCrLf、ChrW(&H3000)(全角空格)也加入到替换列表里,确保所有空白都被处理。
内容的提问来源于stack exchange,提问作者cherry
相关产品推荐
相关产品推荐

