VB6只比较字符串中的数字字符

时间:2015-04-17 14:39:43

标签: sql string parsing vb6 numeric

我需要将VB文件中的电话号码与VB6中SSMS数据库中的电话号码进行比较,而不使用.Net库。一个可能有一个数字为555-555-5555,另一个可能与(555)555-5555具有相同的数字,当比较字符串时,这显然会有所不同。 我知道我可以使用for循环和缓冲区来只输出数字字符,如:

Public Function PhoneNumberNumeric(PhoneNumberCSV As String) As String
Dim CharNdx As Integer
Dim buffer As String
For CharNdx = 1 To Len(PhoneNumberCSV) Step 1
    If IsNumeric(Mid(PhoneNumberCSV, CharNdx, 1)) Then
        buffer = buffer + Mid(PhoneNumberCSV, CharNdx, 1)
    End If
Next
PhoneNumberNumeric = buffer
End Function

但这很贵。有没有更便宜的方法来做到这一点?

1 个答案:

答案 0 :(得分:3)

这应该更快一些:

Private Function Clean(ByRef Original As String) As String
    Dim I As Long
    Dim J As Long
    Dim Char As Long

    Clean = Space$(10)
    For I = 1 To Len(Original)
        Char = AscW(Mid$(Original, I, 1))
        If 48 <= Char And Char <= 57 Then
            J = J + 1
            If J > 10 Then Exit For 'Or raise an exception.
            Mid$(Clean, J, 1) = ChrW$(Char)
        End If
    Next
End Function

它避免了字符串连接,ANSI转换和VBScript-form&#34; pigeon VB&#34; (使用慢速Variant函数)。