|
顺便研究一下,发现在VBA中使用工作表函数Trim时,速度并不算很快。
100个字符以内,和自定义函数比速度差不多。
但如果字符较长时,还是有速度的。- Sub SpeedCompare()
- Dim i&, j&, p&, s$
- p = 4
-
- s = " 1-2 3 4-5 6 7 8 "
- For i = 1 To 2
- s = s & s
- Next
- Debug.Print " ": Debug.Print "-Begin- Len: " & Len(s)
- For j = 0 To 4
- tms = Timer
- For i = 1 To 10 ^ p
- Run "Test" & j, s
- Next
- Debug.Print "Test" & j & ": " & Format(Timer - tms, "0.0000s")
- Next
- Debug.Print "--End--"
- End Sub
- Sub test0(s$)
- t = trm(s)
- End Sub
- Sub test1(s$)
- t = trm1(s)
- End Sub
- Sub test2(s$)
- t = trm2(s)
- End Sub
- Sub test3(s$)
- t = trm3(s)
- End Sub
- Sub test4(s$)
- t = trm4(s)
- End Sub
- Sub test()
- s$ = " 1-2 3 4-5 6 7 8 "
- MsgBox s & vbCr & trm(s) & vbCr & trm2(s)
-
- t = Trim(s)
- t = Replace(t, " ", "| |")
- t = Split(t)
- t = Filter(t, "||", False)
- t = Join(t)
- t = Replace(t, "|", "")
-
- End Sub
- Function trm$(s$)
- trm = Application.Trim(s)
- End Function
- Function trm1$(s$)
- trm1 = Replace(Join(Filter(Split(Replace(Trim(s), " ", "| |")), "||", False)), "|", "")
- End Function
- Function trm2$(s$)
- Dim i&, s1$, s2$
- s1 = " " & s & " "
- For i = 1 To Len(s1) - 1
- If Mid(s1, i, 1) <> " " Then s2 = s2 & Mid(s1, i, 1) Else If Mid(s1, i + 1, 1) <> " " Then s2 = s2 & " "
- Next
- trm2 = Mid(s2, 2)
- End Function
- Function trm3$(s$)
- Dim s1$, s2$, n&
- s1 = Trim(s)
- Do
- n = InStr(s1, " "): If n = 0 Then Exit Do Else s2 = s2 & Left(s1, n): s1 = Trim(Mid(s1, n))
- Loop
- trm3 = s2 & s1
- End Function
- Function trm4(str As String) As String
- Dim str1 As String, str2 As String, n As Integer
- str = Trim(Replace(str, " ", ""))
- Do
- n = InStr(str, " ")
- If n > 0 Then
- str1 = Left(str, n)
- str = Trim(Mid(str, n))
- str2 = str2 & str1
- End If
- Loop Until n = 0
- trm4 = str2 & str
- End Function
复制代码 |
评分
-
查看全部评分
|