Access Vba - 反转字符串的内容

Access Vba - Reverse a string's contents

我有一个名为 str = "12345-5, 12345-4, 12345-3, 12345-2, 12345-1 的字符串,我需要反转该字符串,使其看起来像这样 str = "12345-1, 12345-2, 12345-3, 12345-4, 12345-5" 我已经尝试过 strReverse 方法,它几乎完成了我想要的...

Sub rev()
    Dim str As String

    str = "12345-5, 12345-4, 12345-3, 12345-2, 12345-1"

    str = StrReverse(Trim(str))
    'turns out to be str = "1-54321 ,2-54321 ,3-54321 ,4-54321 ,5-54321"
End Sub

但它最终反转了整个字符串,应该猜到了。所以我想知道我是否应该使用正则表达式来解析字符串并删除“12345-”然后将其反转并将其添加回去?我不太确定这是否是解决我的问题的最佳方法。有谁知道我的问题的解决方案或可以指出正确的方向?谢谢

使用Split然后通过数组向后循环:

Sub rev()
    Dim str As String

    str = "12345-5, 12345-4, 12345-3, 12345-2, 12345-1"

    Dim strArr() As String
    strArr = Split(str, ",")

    str = ""

    Dim i As Long
    For i = UBound(strArr) To LBound(strArr) Step -1
        str = str & ", " & Trim(strArr(i))
    Next i

    str = Mid(str, 3)

    Debug.Print str
End Sub

我会这样做:

Sub TestMe()

    Dim str As String
    str = "12345-5, 12345-4, 12345-3, 12345-2, 12345-1"
    str = StrReverse(str)

    Dim myArr As Variant
    myArr = Split(str, ",")

    Dim newString As String
    Dim myA As Variant

    For Each myA In myArr
        newString = newString & StrReverse(myA) & ","
    Next myA

    newString = Trim(Left(newString, Len(newString) - 1))
    Debug.Print newString

End Sub

得到这个:

12345-1, 12345-2, 12345-3, 12345-4,12345-5

总的来说,这是一个很受欢迎的算法问题,Google 曾经被初级开发者问过。听起来像这样 - Efficiently reverse the order of the words (not characters) in an array of characters