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