首页 > 解决方案 > 对字符串进行排序

问题描述

我正在尝试按字母顺序对字符串“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

标签: stringvbaexcelsorting

解决方案


这是一种更简单、更快捷的使用方法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


推荐阅读