powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Разбор текстовой строки
6 сообщений из 6, страница 1 из 1
Разбор текстовой строки
    #38748954
textstring
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть большой перечень инвентарных номеров вида число+символ/буква+число - например, 423-2333, 45668/14, 45F477851 (в качестве символ/буква пока такие варианты "-", "/", "F")
Эти номера нужно обработать с целью получения из каждого - два числа, без разделителя (напр. как два элемента массива).
Подскажите, как оптимальнее проводить такую обработку в VBA
...
Рейтинг: 0 / 0
Разбор текстовой строки
    #38748980
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 replace + split
...
Рейтинг: 0 / 0
Разбор текстовой строки
    #38749500
textstring
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cо Split понятно, а что подразумевается под "2 replace"?
...
Рейтинг: 0 / 0
Разбор текстовой строки
    #38749506
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выбрать один (любой) разделитель. Двумя replace заменить другие два на выбранный. Потом split по выбранному.
...
Рейтинг: 0 / 0
Разбор текстовой строки
    #38749595
textstring
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Т.к. в дальнейшем возможны и другие разделители, пока такой код:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Sub Separator()
    Dim separat As Variant
    Dim cc As Variant
    Dim k() As String
    For Each cc In Selection
        For Each separat In Array("-", "/", "F") ' на будущее
            cc = Replace(cc, separat, "@")
        Next
        k = Split(cc, "@")
    Debug.Print k(0) & vbTab & k(1) ' для отладки
    Next
End Sub


Или получше можно сделать?
...
Рейтинг: 0 / 0
Разбор текстовой строки
    #38749883
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
textstringИли получше можноНу, можно воспользоваться regexp. Вроде такого:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Sub Separator2()
    Dim cc As Variant
    Dim r As Object, m As Object
    Set r = CreateObject("vbscript.regexp")
    With r
        .Global = False: .IgnoreCase = True: .MultiLine = False: .Pattern = "(\d+)([-\/F]+)(\d+)"
    End With
    For Each cc In Selection
        Set m = r.Execute(cc)
        If m.Count Then
            Debug.Print m(0).Submatches(0) & vbTab & m(0).Submatches(2) ' для отладки
        End If
    Next
End Sub


Только надо все равно проверять, какой подход быстрее...
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Разбор текстовой строки
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]