Вырвать часть значения строки

Здесь выкладываем скрипты
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
CyberNewbie
Сообщения: 6
Зарегистрирован: 26 окт 2021, 10:29

Здравствуйте,

Подскажите как оперировать лишь частью значения строки, допустим я получаю в комментарии следующее значение:
136345 DB / 1500 KB
Каким образом я могу схватить значение 136345? Например это значение нужно присвоить переменой.

Заранее спасибо.


Аватара пользователя
Virtue
Сообщения: 142
Зарегистрирован: 07 мар 2014, 10:17

CyberNewbie писал(а): 26 окт 2021, 22:59 Каким образом я могу схватить значение 136345?
например через :pick

Код: Выделить всё

:local var1 "136345 DB / 1500 KB"
:local var2 [:pick $var1 0 [:find $var1 " "]]
:put $var2
output:
136345
Последний раз редактировалось Virtue 27 окт 2021, 14:43, всего редактировалось 1 раз.


CyberNewbie
Сообщения: 6
Зарегистрирован: 26 окт 2021, 10:29

Большое спасибо, а вторую часть (1500) как вырвать? подскажите плиз, сам пробую, но что то пока в синтаксисе не разобрался


Аватара пользователя
Virtue
Сообщения: 142
Зарегистрирован: 07 мар 2014, 10:17

CyberNewbie писал(а): 27 окт 2021, 13:37 (1500) как вырвать?

Код: Выделить всё

:local var1 "136345 DB / 1500 KB"
:local var2 [:pick $var1 ([:find $var1 "DB"] + 5) ([:find $var1 "KB"] - 1)]
:put $var2
output:
1500


CyberNewbie
Сообщения: 6
Зарегистрирован: 26 окт 2021, 10:29

Правильно ли я понимаю что:
"DB"] + 5
Отсчёт элементов начинается с DB + ещё три символа?

Большое спасибо за помощь.


Аватара пользователя
Virtue
Сообщения: 142
Зарегистрирован: 07 мар 2014, 10:17

CyberNewbie писал(а): 27 окт 2021, 22:14 Правильно ли я понимаю что:
"DB"] + 5
Отсчёт элементов начинается с DB + ещё три символа?
find DB ставит отсчет перед DB точнее перед D, теперь +5 (на 5 символов вправо) до нужного вам числа (DB тоже считается т.к мы стояли перед ним)


CyberNewbie
Сообщения: 6
Зарегистрирован: 26 окт 2021, 10:29

Virtue писал(а): 27 окт 2021, 23:20
find DB ставит отсчет перед DB точнее перед D, теперь +5 (на 5 символов вправо) до нужного вам числа (DB тоже считается т.к мы стояли перед ним)
Понял, большое спасибо


dizzy
Сообщения: 20
Зарегистрирован: 18 ноя 2013, 18:24

Добрый день!

Не получается выцепить ip адрес 159.203.208.5 из строки:

Код: Выделить всё

phase1 phase1 negotiation failed due to time up 215.145.34.67[500]<=>159.203.208.5[38100] 111555f681d524ef:7b14a0533b431266

Делаю так:

Код: Выделить всё

:global var1 "phase1 negotiation failed due to time up 215.145.34.67[500]<=>159.203.208.5[38100] 111555f681d524ef:7b14a0533b431266"
:global var2 [:pick $var1 ([:find $var1 ">"] + 1) ([:find $var1 "["])]
:put $var2
после выполнения $var2 - пустой
Полагаю это из-за того, что перед нужным мне символом "[" встречается еще один такой же. Как это обойти?

P.S.

Добавил третью переменную, вроде заработало:

Код: Выделить всё

:global var1 "phase1 negotiation failed due to time up 215.145.34.67[500]<=>159.203.208.5[38100] 111555f681d524ef:7b14a0533b431266"
:global var3Temp [:pick $var1 ([:find $var1 ">"] + 1) [:len $var1]]
:global var2 [:pick $var3Temp 0 ([:find $var3Temp "["])]
:put $var2
Последний раз редактировалось dizzy 06 фев 2023, 12:53, всего редактировалось 1 раз.


-13-
Сообщения: 124
Зарегистрирован: 18 мар 2021, 12:45

можно так

Код: Выделить всё

:local var1 "phase1 negotiation failed due to time up 215.145.34.67[500]<=>159.203.208.5[38100] 111555f681d524ef:7b14a0533b431266";
:set $var1 [:pick $var1 ([:find $var1 ">"] + 1) [:len $var1]];
:set $var1 [:pick $var1 0 [:find $var1 "["]];
:put $var1


dizzy
Сообщения: 20
Зарегистрирован: 18 ноя 2013, 18:24

Ok, понял, спасибо!


Ответить