Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Преобразование строки символов / 11 сообщений из 11, страница 1 из 1
19.02.2021, 10:40
    #40047017
drafty
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование строки символов
Здравствуйте уважаемые форумчане-профи "акса"!
Меня всегда интересовал один вопрос,но его разрешение я всегда оставлял на потом,потому что удавалось справляться посредством применения функций Left,Right,Mid.
Допустим есть строка в каком-либо поле,но ее длина может принимать разное значение.
Но всегда,в начале этой строки присутствует определенный "закономерный" набор символов,например: "_1111-222_ghjghgjgjgjgjhgyhhg" или "_1111-222_1111-222_4589ололлддгроролро" или "_1111-222_3333-444_5555-666_999qwerty"
Теперь вопрос,как можно удалить все символы ПРЕДШЕСТВУЮЩИЕ последнему символу "_" и включая его самого,т.е. чтобы после удаления осталась только строка,которая не имеет в своем составе комбинации "НИЖНИЙ ПРОЧЕРК & ЦИФРА & ЦИФРА & ЦИФРА & ЦИФРА & ДЕФИС & ЦИФРА & ЦИФРА & ЦИФРА & НИЖНИЙ ПРОЧЕРК" ну или хотя бы удалить все,что до нижнего прочерка(включая его самого)?
...
Рейтинг: 0 / 0
19.02.2021, 11:20
    #40047040
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование строки символов
drafty
Теперь вопрос,как можно удалить все символы ПРЕДШЕСТВУЮЩИЕ последнему символу "_" и включая его самого

Код: vbnet
1.
2.
s = "_1111-222_ghjghgjgjgjgjhgyhhg": ?Right(s,Len(s)-InStrRev(s,"_"))
ghjghgjgjgjgjhgyhhg
...
Рейтинг: 0 / 0
19.02.2021, 11:34
    #40047044
drafty
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование строки символов
court,
понял,не дурак...THNK! :)
...
Рейтинг: 0 / 0
19.02.2021, 11:53
    #40047057
alecko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование строки символов
другой путь
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Private sub test()
dim s as string, arstr() as string, simvs, txt as string
simvs=array("_","1","2")
s= "_1111-222_1111-222_4589ололлддгроролро" или "_1111-222_3333-444_5555-666_999qwerty"

for i=0 to ubound(simvs)
arstr=split(txt,simvs(i))
txt=arstr(ubound(arstr))
erase arstr
next

debug.print txt
end sub

...
Рейтинг: 0 / 0
19.02.2021, 12:37
    #40047087
drafty
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование строки символов
alecko
другой путь
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Private sub test()
dim s as string, arstr() as string, simvs, txt as string
simvs=array("_","1","2")
s= "_1111-222_1111-222_4589ололлддгроролро" или "_1111-222_3333-444_5555-666_999qwerty"

for i=0 to ubound(simvs)
arstr=split(txt,simvs(i))
txt=arstr(ubound(arstr))
erase arstr
next

debug.print txt
end sub


"громоздкий",первый более "изящнее"
...
Рейтинг: 0 / 0
19.02.2021, 14:04
    #40047134
Преобразование строки символов
Еще вариант:
Код: vbnet
1.
2.
v = Split("_1111-222_ghjghgjgjgjgjhgyhhg","_"): ?v(Ubound(v))
ghjghgjgjgjgjhgyhhg

Но мой и court варианты предполагают, что символ "_" в самом тексте отсутствует. Иначе лучше копать в сторону регулярных выражений.
...
Рейтинг: 0 / 0
19.02.2021, 14:42
    #40047151
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование строки символов
drafty
чтобы после удаления осталась только строка, которая не имеет в своем составе комбинации "НИЖНИЙ ПРОЧЕРК & ЦИФРА & ЦИФРА & ЦИФРА & ЦИФРА & ДЕФИС & ЦИФРА & ЦИФРА & ЦИФРА & НИЖНИЙ ПРОЧЕРК"
При таком подходе "_1111-222_ghjghgjgjgjgjhgyhhg" преобразуется, например, в "1111-222_ghjghgjgjgjgjhgyhhg". Будьте аккуратнее в формулировках...

PS.
Код: vbnet
1.
2.
s = "_1111-222_ghjghgjgjgjgjhgyhhg": ? StrReverse(Split(StrReverse(s), "_")(0))
ghjghgjgjgjgjhgyhhg
...
Рейтинг: 0 / 0
20.02.2021, 09:10
    #40047426
drafty
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование строки символов
Кривцов Анатолий
Еще вариант:
Код: vbnet
1.
2.
v = Split("_1111-222_ghjghgjgjgjgjhgyhhg","_"): ?v(Ubound(v))
ghjghgjgjgjgjhgyhhg

Но мой и court варианты предполагают, что символ "_" в самом тексте отсутствует. Иначе лучше копать в сторону регулярных выражений .

можно пояснить что под этим подразумевается?
...
Рейтинг: 0 / 0
20.02.2021, 10:20
    #40047443
drafty
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование строки символов
Akina
drafty
чтобы после удаления осталась только строка, которая не имеет в своем составе комбинации "НИЖНИЙ ПРОЧЕРК & ЦИФРА & ЦИФРА & ЦИФРА & ЦИФРА & ДЕФИС & ЦИФРА & ЦИФРА & ЦИФРА & НИЖНИЙ ПРОЧЕРК"
При таком подходе "_1111-222_ghjghgjgjgjgjhgyhhg" преобразуется, например, в "1111-222_ghjghgjgjgjgjhgyhhg". Будьте аккуратнее в формулировках...

PS.
Код: vbnet
1.
2.
s = "_1111-222_ghjghgjgjgjgjhgyhhg": ? StrReverse(Split(StrReverse(s), "_")(0))
ghjghgjgjgjgjhgyhhg


уважаемый,не могу понять, что это за аргумент (ноль в скобках),"флаг" двоичного сравнения?
Пытался понять механизм этой "матрешки" функций - не смог,запутался в скобках.Например в дебагере набираю
Split ("172.1.0.16", ".", 1)
выдается Run Time Error 13 ошибка Type Mismatch...
так StrReverse(Split(StrReverse(Me.Primechanie), "_")(0)) работает как вы и говорили, а по отдельности - не могу воспроизвести...скобки сбивают со смысла :)
...
Рейтинг: 0 / 0
20.02.2021, 10:32
    #40047449
drafty
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование строки символов
Akina
drafty
чтобы после удаления осталась только строка, которая не имеет в своем составе комбинации "НИЖНИЙ ПРОЧЕРК & ЦИФРА & ЦИФРА & ЦИФРА & ЦИФРА & ДЕФИС & ЦИФРА & ЦИФРА & ЦИФРА & НИЖНИЙ ПРОЧЕРК"
При таком подходе "_1111-222_ghjghgjgjgjgjhgyhhg" преобразуется, например, в "1111-222_ghjghgjgjgjgjhgyhhg". Будьте аккуратнее в формулировках...

PS.
Код: vbnet
1.
2.
s = "_1111-222_ghjghgjgjgjgjhgyhhg": ? StrReverse(Split(StrReverse(s), "_")(0))
ghjghgjgjgjgjhgyhhg


Не могу понять:
Код: vbnet
1.
2.
3.
4.
Private Sub Primechanie_Enter()
Dim varstr
varstr = Split("_1111-222_ghjghgjgjgjgjhgyhhg", "_")
End Sub


Так срабатывает нормально,а когда в дебагере проверяю значение ?varstr - выдается вышеоговоренная ошибка
Вопрос - почему?
...
Рейтинг: 0 / 0
20.02.2021, 11:27
    #40047470
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование строки символов
drafty
уважаемый,не могу понять, что это за аргумент (ноль в скобках),"флаг" двоичного сравнения?
Пытался понять механизм этой "матрешки" функций - не смог,запутался в скобках.Например в дебагере набираю
Split ("172.1.0.16", ".", 1)
Функция Split
Читай про массивы. Например, https://codernotes.ru/articles/vba/massivy-v-vba.html
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Преобразование строки символов / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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