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

Код: vbnet
1.
2.
s = "_1111-222_ghjghgjgjgjgjhgyhhg": ?Right(s,Len(s)-InStrRev(s,"_"))
ghjghgjgjgjgjhgyhhg
...
Рейтинг: 0 / 0
Преобразование строки символов
    #40047044
Фотография drafty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
court,
понял,не дурак...THNK! :)
...
Рейтинг: 0 / 0
Преобразование строки символов
    #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
Преобразование строки символов
    #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
Преобразование строки символов
    #40047134
Еще вариант:
Код: vbnet
1.
2.
v = Split("_1111-222_ghjghgjgjgjgjhgyhhg","_"): ?v(Ubound(v))
ghjghgjgjgjgjhgyhhg

Но мой и court варианты предполагают, что символ "_" в самом тексте отсутствует. Иначе лучше копать в сторону регулярных выражений.
...
Рейтинг: 0 / 0
Преобразование строки символов
    #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
Преобразование строки символов
    #40047426
Фотография drafty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кривцов Анатолий
Еще вариант:
Код: vbnet
1.
2.
v = Split("_1111-222_ghjghgjgjgjgjhgyhhg","_"): ?v(Ubound(v))
ghjghgjgjgjgjhgyhhg

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

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


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