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
我有一个名为 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