Access Vba - Обратное содержимое строки - PullRequest
0 голосов
/ 25 мая 2018

У меня есть строка с именем 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-», а затем повернуть ее вспять и добавить обратно?Я не слишком уверен, что это будет лучшим методом для моей проблемы.Кто-нибудь знает решение моей проблемы или может указать мне правильное направление?Спасибо

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Я бы сделал это так:

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 для младшихРазработчики.Звучит так - Эффективно изменить порядок слов (не символов) в массиве символов

0 голосов
/ 25 мая 2018

Используйте 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...