string - 对字符串进行排序
问题描述
我正在尝试按字母顺序对字符串“typestr”进行排序:
typestr = "cda"
Dim temp As String
For i = 1 To Len(typeStr) - 1
For j = i + 1 To Len(typeStr)
If Mid(typeStr, i, 1) > Mid(typeStr, j, 1) Then
temp = Mid(typeStr, i, 1)
typeStr = Replace(typeStr, Mid(typeStr, i, 1), Mid(typeStr, j, 1), i, 1)
typeStr = Replace(typeStr, Mid(typeStr, j, 1), temp, j, 1)
End If
Next j
Next i
这一切都很好,直到我来到最后一个替换功能。发布第一个替换函数字符串是
typestr = ada
而我的“临时”字符串是
temp = c
由于此时 j = 3,最后一个替换应该只替换 ada 中的最后一个 a,但是会发生 typestr 被替换为 temp
typestr = c
解决方案
这是一种更简单、更快捷的使用方法ArrayList
:
Function SortString(inputStr As String) As String
Dim list As Object
Set list = CreateObject("System.Collections.ArrayList")
For i = 1 To Len(inputStr)
list.Add (Mid$(inputStr, i, 1))
Next
list.Sort
SortString = Join(list.ToArray, "")
End Function
用法:
MsgBox SortString("cbazyx")
输出:
abxyz