Vb6 如何删除特定字符

Vb6 如何删除特定字符,vb6,Vb6,我有一个类似于X5BC8373XXX的字符串。其中X=一个特殊字符等于一个正方形。 我也有一些特殊字符,如\n,但我删除了它们,但无法删除方块。。。 我想知道如何删除它。 我发现这个方法: Dim Test As String Test = Replace(Mscomm1.Input, Chr(160), Chr(64) 'Here I remove some of the special characters like \n Test = Left$(Test, Len(Test) -2) T

我有一个类似于
X5BC8373XXX
的字符串。其中X=一个特殊字符等于一个正方形。
我也有一些特殊字符,如
\n
,但我删除了它们,但无法删除方块。。。 我想知道如何删除它。
我发现这个方法:

Dim Test As String
Test = Replace(Mscomm1.Input, Chr(160), Chr(64) 'Here I remove some of the special characters like \n
Test = Left$(Test, Len(Test) -2)
Test = Right$(Test, Len(Test) -2)
此方法确实删除了这些特殊字符,但同时也删除了我的第一个字符
5

我意识到这种方法只需从
左侧
右侧

但是我怎样才能解决这个问题来删除这些特殊字符呢


我还看到了一些类似于这样的东西,但是我不能使用它\

清除不可打印的字符非常容易。一种强力但易于定制的方法可能是:

Private Function Printable(ByVal Text As String) As String
    Dim I As Long
    Dim Char As String
    Dim Count As Long

    Printable = Text 'Allocate space, same width as original.
    For I = 1 To Len(Text)
        Char = Mid$(Text, I, 1)
        If Char Like "[ -~]" Then
            'Char was in the range " " through "~" so keep it.
            Count = Count + 1
            Mid$(Printable, Count, 1) = Char
        End If
    Next
    Printable = Left$(Printable, Count)
End Function

Private Sub Test()
    Dim S As String

    S = vbVerticalTab & "ABC" & vbFormFeed & vbBack
    Text1.Text = S 'Shows "boxes" or "?" depending on the font.
    Text2.Text = Printable(S)
End Sub

您可以使用正则表达式。如果您想删除所有不是数字或字母的内容,可以使用下面的代码。如果您想保留其他字符,正则表达式是高度可定制的,但可能会有点混乱

这还有一个好处,就是一次完成整个字符串,而不是逐个字符

您需要在项目中引用Microsoft VBScript正则表达式

Function AlphaNum(OldString As String)
   Dim RE As New RegExp
   RE.Pattern = "[^A-Za-z0-9]"
   RE.Global = True
   AlphaNum = RE.Replace(OldString, "")
End Function

这将删除控制字符(低于CHR(32))

函数CleanString(strBefore As String)As String
CleanString=“”
作为字符串的Dim strAfter
Dim intAscii作为整数
将strTest设置为字符串
双精度dblX
双色暗德布伦
intLen=Len(strBefore)
对于dblX=1到dblLen
strTest=Mid(strBefore,dblX,1)
如果Asc(strTest)<32,则
strTest=“”
如果结束
strAfter=strAfter&strTest
下一个dblX
CleanString=strAfter
端函数

将传递给
左$
右$
函数的
-2
参数更改为另一个数字?@CodyGray我考虑过,但我会有一个不同长度的
CardID
你知道吗?这就是为什么我要求一种可能不同的方法。然后你需要弄清楚那些“特殊角色”是什么以及它们来自哪里。然后您也可以
替换它们。它们显示为正方形/长方体的原因是因为您的字体没有该字符的字形。使用调试器查看数值是什么。您所指的“正方形”可能只是非ASCII值以不包含它的字体显示时使用的通用占位符,因此实际值不是您可以查找的;很可能每个“正方形”都会有所不同。你从哪儿弄来的线绳?如果它来自一个文件,你可以使用十六进制查看器或编辑器来查看它的真实内容。我知道如何在C#中删除它们,但现在我必须用VB6=\实现它,而我对这种语言一无所知。在调试中,它只显示一个正方形。。。谢谢你,科迪格雷
Function CleanString(strBefore As String) As String
  CleanString = ""
  Dim strAfter As String
  Dim intAscii As Integer
  Dim strTest As String
  Dim dblX As Double
  Dim dblLen As Double
  intLen = Len(strBefore)
  For dblX = 1 To dblLen
    strTest = Mid(strBefore, dblX, 1)
    If Asc(strTest) < 32 Then
      strTest = " "
    End If
    strAfter = strAfter & strTest
  Next dblX
  CleanString = strAfter
End Function