Страница 1 из 2

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

Добавлено: 26 окт 2021, 22:59
CyberNewbie
Здравствуйте,

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

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

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

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

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

:local var1 "136345 DB / 1500 KB"
:local var2 [:pick $var1 0 [:find $var1 " "]]
:put $var2
output:
136345

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

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

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

Добавлено: 27 окт 2021, 14:36
Virtue
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

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

Добавлено: 27 окт 2021, 22:14
CyberNewbie
Правильно ли я понимаю что:
"DB"] + 5
Отсчёт элементов начинается с DB + ещё три символа?

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

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

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

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

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

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

Добавлено: 06 фев 2023, 11:06
dizzy
Добрый день!

Не получается выцепить 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

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

Добавлено: 06 фев 2023, 12:48
-13-
можно так

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

: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

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

Добавлено: 06 фев 2023, 13:02
dizzy
Ok, понял, спасибо!