'测文件 '13751884586 '13922541252 '13844332952 '13511125482 '13152541212 '13545121234 '13525443325Private Sub Command1_Click() '4433 111 1212 Call Find(4433, 111, 1212) End SubPrivate Sub Find(abab As Integer, aabb As Integer, aaa As Integer) Dim arr() As String, sFile As String, i As Long Dim Result As String
Open "c:\1.txt" For Binary As #1 '你的手机号文件 sFile = Space(LOF(1)) Get #1, , sFile Close #1
arr = Split(sFile, vbCrLf) For i = 0 To UBound(arr) - 1 '如果txt文件最后一行没有空格时去掉-1 If InStr(arr(i), abab) > 0 Or InStr(arr(i), aabb) > 0 Or InStr(arr(i), aaa) Then Result = Result & arr(i) & vbCrLf End If Next i 'Debug.Print Result MsgBox Result End Sub
Public Function iStr(ByVal s As String) Dim i As Integer Dim a1, a2, a3, a4, s1 As Integer For i = 1 To Len(s) - 2 s1 = Mid(s, i, 3) a1 = Mid(s1, 1, 1) a2 = Mid(s1, 2, 1) a3 = Mid(s1, 3, 1) If a1 = a2 And a3 = a2 Then Debug.Print s1 End If Next For i = 1 To Len(s) - 3 s1 = Mid(s, i, 4) a1 = Mid(s1, 1, 1) a2 = Mid(s1, 2, 1) a3 = Mid(s1, 3, 1) a4 = Mid(s1, 4, 1) If a1 = a2 And a3 = a4 Then Debug.Print s1 End If Next For i = 1 To Len(s) - 3 s1 = Mid(s, i, 4) a1 = Mid(s1, 1, 2) a2 = Mid(s1, 3, 2) If a1 = a2 Then Debug.Print s1 End If Next End FunctionPrivate Sub Form_Load() iStr "13134433555"End Sub
'13751884586
'13922541252
'13844332952
'13511125482
'13152541212
'13545121234
'13525443325Private Sub Command1_Click()
'4433 111 1212
Call Find(4433, 111, 1212)
End SubPrivate Sub Find(abab As Integer, aabb As Integer, aaa As Integer)
Dim arr() As String, sFile As String, i As Long
Dim Result As String
Open "c:\1.txt" For Binary As #1 '你的手机号文件
sFile = Space(LOF(1))
Get #1, , sFile
Close #1
arr = Split(sFile, vbCrLf)
For i = 0 To UBound(arr) - 1 '如果txt文件最后一行没有空格时去掉-1
If InStr(arr(i), abab) > 0 Or InStr(arr(i), aabb) > 0 Or InStr(arr(i), aaa) Then
Result = Result & arr(i) & vbCrLf
End If
Next i
'Debug.Print Result
MsgBox Result
End Sub
如果用这个函数挑选所有符合abab的号码,
岂不是参数要带上一大筐如下:
Call Find(0011, 0022, 0033-->0099,0101,0202-->0909,2121,2323-->2929…………………………………………………………………………)
那样代码也太长了吧。我的思路:
写个函数,
把11位数字先存到一个数组里面,
然后先4位数字比较,如果有3位相同调出来,
然后挑前两位相同和后两位相同的,
然后挑隔1位相同的,如果符合上面的一个筛选条件函数返回真
Public Function iStr(ByVal s As String)
Dim i As Integer
Dim a1, a2, a3, a4, s1 As Integer
For i = 1 To Len(s) - 2
s1 = Mid(s, i, 3)
a1 = Mid(s1, 1, 1)
a2 = Mid(s1, 2, 1)
a3 = Mid(s1, 3, 1)
If a1 = a2 And a3 = a2 Then
Debug.Print s1
End If
Next
For i = 1 To Len(s) - 3
s1 = Mid(s, i, 4)
a1 = Mid(s1, 1, 1)
a2 = Mid(s1, 2, 1)
a3 = Mid(s1, 3, 1)
a4 = Mid(s1, 4, 1)
If a1 = a2 And a3 = a4 Then
Debug.Print s1
End If
Next
For i = 1 To Len(s) - 3
s1 = Mid(s, i, 4)
a1 = Mid(s1, 1, 2)
a2 = Mid(s1, 3, 2)
If a1 = a2 Then
Debug.Print s1
End If
Next
End FunctionPrivate Sub Form_Load()
iStr "13134433555"End Sub
给个花O(∩_∩)O哈哈~学习一下循环和字符串截取,好好学习天天向上