我需要用于删除vb6字符串中所有unicode字符的代码。
如果这是UTF-16文本(就像正常的VB6字符串值一样),并且您可以忽略代理对的问题,那么这是相当快捷且简洁的:
Private Sub DeleteNonAscii(ByRef Text As String)
Dim I As Long
Dim J As Long
Dim Char As String
I = 1
For J = 1 To Len(Text)
Char = Mid$(Text, J, 1)
If (AscW(Char) And &HFFFF&) <= &H7F& Then
Mid$(Text, I, 1) = Char
I = I + 1
End If
Next
Text = Left$(Text, I - 1)
End Sub
对于无法选择VB6从AscW()
函数返回带符号的16位整数的情况,这具有变通方法。它本来应该是一种渴望的象征,ChrW$()
但事实就是如此。
它应该在清晰度,可维护性和性能方面击败任何正则表达式库。如果要真正获得大量文本需要更好的性能,则可以使用SAFEARRAY或CopyMemory特技。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句