我有一个字符串数组(A到E),我想加入一个字符串("ABCD E").我应该遍历数组还是使用Join函数?
Dim MyArray(5) as String
Dim MyString as String
MyArray(1) = "A"
MyArray(2) = "B"
MyArray(3) = "C"
MyArray(4) = "D"
MyArray(5) = "E"
Run Code Online (Sandbox Code Playgroud)
哪个更快,更明智?
这个?
MyString = MyArray(1)
For i = 2 To 5
MyString = MyString & " " & MyArray(i)
Next
Run Code Online (Sandbox Code Playgroud)
或这个?
MyString = Join(MyArray, " ")
Run Code Online (Sandbox Code Playgroud)
对于 100k 阵列
Sub test()
Dim aArr(1 To 100000) As String
Dim i As Long
Dim sString As String
Dim snTimer As Single
FillArray aArr
snTimer = Timer
For i = 1 To 100000
sString = sString & Space(1) & aArr(i)
Next i
Debug.Print Timer - snTimer
snTimer = Timer
sString = Join(aArr, Space(1))
Debug.Print Timer - snTimer
End Sub
Run Code Online (Sandbox Code Playgroud)
加入是明显的赢家
2.050781
0
Run Code Online (Sandbox Code Playgroud)
原因是每次连接&内存时都必须重新分配以容纳新数组(无论如何都是所有字符串)。使用 Join,您只需将一个数组(源数组)复制到另一个数组(字符串),并且 VBA 已经知道其大小。
| 归档时间: |
|
| 查看次数: |
1782 次 |
| 最近记录: |