Разбор содержимого строки

Пользовательские блоки расширяющие стандартные возможности работы со строками.
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

Разбор содержимого строки

#1

Сообщение Ingwar » 12.01.2019{, 20:13}

Блок для вычленения нужной информации между заданным разделителем из СМС, с СОМ порта или SD.
Содержит 5 выходов.
На пример строка на входе jjjeee123;1r23;234;we;asd;5;7775 в качестве разделителя выбран символ ";"

На выходах блока будут соответственно:
1r23
234
we
asd
5

Структура очень простая и легко можете переделать на большее или меньшее кол-во.
Для сравнения (при создании блока с нужным кол-вом выходов), в качестве примера, прилагаю блок на 3 выхода.

Если будете использовать блок с избыточным кол-вом выходов, будьте готовы к "мусору" на неиспользуемых выходах.
pars_5_out_(CODE).ubi
(26.91 КБ) 258 скачиваний
pars_3_out_(CODE).ubi
(25.13 КБ) 243 скачивания
parsing.flp
(87.67 КБ) 265 скачиваний
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 294
Откуда: Ульяновск
Имя: Александр

Разбор содержимого строки

#2

Сообщение AlexCrane » 16.01.2019{, 20:19}

Ingwar, Думал строку разобрать по словам с разделителем "пробел", ан нет первое слово пропало т.к. спереди нет пробела. Как мне кажется намного полезнее разбирать по окончанию разделителя

Пример jjjeee123;1r23;234;we;asd;5;7775;

На выходе:
jjjeee123
1r23
234
we
asd

И разрешение использовать такого типа блоки один раз не гуманно :shok:
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

Разбор содержимого строки

#3

Сообщение Ingwar » 16.01.2019{, 20:35}

AlexCrane писал(а):
16.01.2019{, 20:19}
кажется намного полезнее разбирать по окончанию разделителя
Ingwar писал(а):
12.01.2019{, 20:13}
между заданным разделителем
Просто делал блок из примера под свои нужды, в дополнение к чтению с SD.
AlexCrane писал(а):
16.01.2019{, 20:19}
И разрешение использовать такого типа блоки один раз не гуманно
Да я не против, но во первых в моем проекте достаточно 1 раз, а во вторых - я решил изучать язык пару недель назад (Sancho не даст соврать) :smile44:
И совершенно не против если Вы подправите и выложите более удобный вариант.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 294
Откуда: Ульяновск
Имя: Александр

Разбор содержимого строки

#4

Сообщение AlexCrane » 17.01.2019{, 21:08}

Ingwar, Находит в строке элемент выделенный с обоих сторон разделителем sep по его номеру вхождения index
Пример:
000;111;222;333;444;555;666;777;888;999;w

по индексу 1 найдет 111
000 и w не найдутся т.к. не выделены разделителем с двух сторон

Если по индеку не находим ничего на выходе пустая строка и Find = false;

Оттестируй
Вложения
test_stack_string.flp
(87.6 КБ) 145 скачиваний
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

Разбор содержимого строки

#5

Сообщение Ingwar » 17.01.2019{, 22:56}

AlexCrane писал(а):
17.01.2019{, 21:08}
Оттестируй
Спасибо. Работает.
Проверил пока в эмуляторе.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

Аватара пользователя
rw6cm
Полковник
Сообщения: 2283
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 334
Имя: Владимир

Разбор содержимого строки

#6

Сообщение rw6cm » 17.01.2019{, 23:38}

Ingwar,
Зачем замарачиваться, если это элементарно делается встроенными блоками :)
Парсинг строк.flp
(220.41 КБ) 267 скачиваний
Win10-64, FLProg (portable)

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

Разбор содержимого строки

#7

Сообщение Ingwar » 18.01.2019{, 00:30}

rw6cm писал(а):
17.01.2019{, 23:38}
Зачем замарачиваться,
Не считая удобства (хотя и Ваш вариант можно загнать в ПБ) - в 2 раза меньше памяти устройства и в 6 раз меньше динамической памяти.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

Аватара пользователя
rw6cm
Полковник
Сообщения: 2283
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 334
Имя: Владимир

Разбор содержимого строки

#8

Сообщение rw6cm » 18.01.2019{, 00:57}

Ingwar писал(а):
18.01.2019{, 00:30}
Не считая удобства (хотя и Ваш вариант можно загнать в ПБ) - в 2 раза меньше памяти устройства и в 6 раз меньше динамической памяти.
Откуда такие астрономические данные :smile37: :)
СпойлерПоказать
тест1.png
тест2.png
Отправлено спустя 1 час 28 минут 46 секунд:
Если по логике предложенной AlexCrane (выводить последовательно в одну переменную)
еще проще
Парсинг в 1переменную.flp
(72.57 КБ) 149 скачиваний
Win10-64, FLProg (portable)

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

Разбор содержимого строки

#9

Сообщение Ingwar » 18.01.2019{, 08:11}

rw6cm писал(а):
18.01.2019{, 02:25}
Откуда такие астрономические данные
Мы разные блоки сравниваем. И правильнее сравнивать без ввода/вывода. Я отключил в Вашем проекте 1 и 3 платы.
Ваш на стандартных блоках.
СпойлерПоказать
ср2.png
С первого поста
СпойлерПоказать
ср3.png
И вариант Александра по моей просьбе с последовательным выводом
СпойлерПоказать
ср1.png
P.S. Ваш последний
СпойлерПоказать
ср4.png
Тут все гораздо лучше конечно. Только нет произвольной выборки по индексу.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 294
Откуда: Ульяновск
Имя: Александр

Разбор содержимого строки

#10

Сообщение AlexCrane » 18.01.2019{, 09:12}

rw6cm писал(а):
18.01.2019{, 02:25}
выводить последовательно в одну переменную
Ingwar писал(а):
18.01.2019{, 08:11}
И вариант Александра по моей просьбе с последовательным выводом
Последовательный вывод был просто для примера, а так произвольно....
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

Аватара пользователя
rw6cm
Полковник
Сообщения: 2283
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 334
Имя: Владимир

Разбор содержимого строки

#11

Сообщение rw6cm » 18.01.2019{, 11:58}

Ingwar писал(а):
18.01.2019{, 08:11}
Мы разные блоки сравниваем. И правильнее сравнивать без ввода/вывода. Я отключил в Вашем проекте 1 и 3 платы.
Тогда правильней удалить 1,3, платы и расклад будет другой (при отключении платы объем кода не сильно меняется)
Ingwar писал(а):
18.01.2019{, 08:11}
Только нет произвольной выборки по индексу.
да это не проблема
Парсинг в 1пер по индексу.flp
(164.23 КБ) 125 скачиваний
кстати не понятно
AlexCrane писал(а):
17.01.2019{, 21:08}
000 и w не найдутся т.к. не выделены разделителем с двух сторон
как вести счет по индексу перед словом или после? как то с двух сторон в путаницу вводит.

п/с вообще я просто предложил, как это сделать стандартными блоками, тем кто захочет сделать что то под свои хотелки )
Win10-64, FLProg (portable)

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

Разбор содержимого строки

#12

Сообщение Ingwar » 18.01.2019{, 12:34}

rw6cm писал(а):
18.01.2019{, 11:58}
как то с двух сторон в путаницу вводит.
Это просто для примера,что не заключенные в разделитель - не читаются.
rw6cm писал(а):
18.01.2019{, 11:58}
Тогда правильней удалить 1,3, платы и расклад будет другой (при отключении платы объем кода не сильно меняется)
Да, согласен, стало меньше
СпойлерПоказать
ср5.png
rw6cm писал(а):
18.01.2019{, 11:58}
как это сделать стандартными блоками, тем кто захочет сделать что то под свои хотелки )
За это и + :smile9:
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 294
Откуда: Ульяновск
Имя: Александр

Разбор содержимого строки

#13

Сообщение AlexCrane » 18.01.2019{, 12:38}

rw6cm писал(а):
18.01.2019{, 11:58}
как вести счет по индексу перед словом или после? как то с двух сторон в путаницу вводит.
В этом согласен, я бы вел счет по разделителю после, так будет правильнее
к примеру строка:
В лесу родилась ёлочка
с разделителем пробел
разбиралась строго по словам, причем последний пробел не учитывался бы:
1 В
2 лесу
3 родилась
4 ёлочка

rw6cm, вот Вам задачка, справитесь?
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

Аватара пользователя
rw6cm
Полковник
Сообщения: 2283
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 334
Имя: Владимир

Разбор содержимого строки

#14

Сообщение rw6cm » 18.01.2019{, 14:43}

AlexCrane писал(а):
18.01.2019{, 12:38}
rw6cm, вот Вам задачка, справитесь?
:)
In the forest was born herringbone.flp
(62.43 КБ) 119 скачиваний
Win10-64, FLProg (portable)

Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 294
Откуда: Ульяновск
Имя: Александр

Разбор содержимого строки

#15

Сообщение AlexCrane » 18.01.2019{, 15:56}

rw6cm писал(а):
18.01.2019{, 14:43}
In the forest was born herringbone.flp
Не, нужно с выводом нужного слова, к примеру на входе 2, на выходе the
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

Аватара пользователя
rw6cm
Полковник
Сообщения: 2283
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 334
Имя: Владимир

Разбор содержимого строки

#16

Сообщение rw6cm » 18.01.2019{, 18:53}

AlexCrane писал(а):
18.01.2019{, 15:56}
Не, нужно с выводом нужного слова, к примеру на входе 2, на выходе the
В лесу родилась елочка.flp
(193.24 КБ) 150 скачиваний
Win10-64, FLProg (portable)

Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 294
Откуда: Ульяновск
Имя: Александр

Разбор содержимого строки

#17

Сообщение AlexCrane » 19.01.2019{, 10:01}

Ingwar, rw6cm,
Для тех кто не хочет заморачиваться, то-же самое что и выше в посту, только на ПБ
В лесу родилась елочка ПБ.flp
(113.58 КБ) 222 скачивания
Игорь, так более правильно парсить, чем искать вложение между разделителями :yes:
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

Аватара пользователя
gerdog
Рядовой
Сообщения: 42
Зарегистрирован: 04.01.2018{, 07:46}
Репутация: 2

Разбор содержимого строки

#18

Сообщение gerdog » 13.11.2019{, 13:42}

AlexCrane, огромное человеческое спасибо тебе!!! кажется то, что нужно!

KulibinOrsk
Лейтенант
Сообщения: 515
Зарегистрирован: 25.02.2018{, 08:48}
Репутация: 21
Откуда: Оренбург
Имя: Александр

Разбор содержимого строки

#19

Сообщение KulibinOrsk » 13.11.2019{, 13:52}

Полезная вещь. В копилку.
ВОПРОС ЗНАТОКАМ: подскажите как переменную string записать в eeprom а потом считать и записать в другую переменную.
А частности с sim800 считываю номер телефона +7922620... его надо сохранить в еепром и при необходимости считать для работы.

Аватара пользователя
Phazz
Полковник
Сообщения: 2552
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

Разбор содержимого строки

#20

Сообщение Phazz » 13.11.2019{, 14:00}

KulibinOrsk, перевести в longinteger

Отправлено спустя 50 секунд:
Без плюса разумеется

Ответить

Вернуться в «Работа со строками»