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

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

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

#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 КБ) 46 скачиваний
pars_3_out_(CODE).ubi
(25.13 КБ) 40 скачиваний
parsing.flp
(87.67 КБ) 46 скачиваний
С точки зрения геометрической прогрессии, если посмотреть сверху,
то снизу покажется, что сбоку ничего не видно.

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

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

#2

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

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

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

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

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

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

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

#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
Сержант
Сообщения: 181
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 38
Откуда: Ульяновск
Имя: Александр

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

#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 КБ) 28 скачиваний
Если не знаю, то не скажу. Если скажу, то сначала проверю...

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

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

#5

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

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

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

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

#6

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

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

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

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

#7

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

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

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

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

#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 КБ) 25 скачиваний
Win7-32, FLProg (portable)

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

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

#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
Сержант
Сообщения: 181
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 38
Откуда: Ульяновск
Имя: Александр

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

#10

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

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

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

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

#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 КБ) 19 скачиваний
кстати не понятно
AlexCrane писал(а):
17.01.2019{, 21:08}
000 и w не найдутся т.к. не выделены разделителем с двух сторон
как вести счет по индексу перед словом или после? как то с двух сторон в путаницу вводит.

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

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

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

#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
Сержант
Сообщения: 181
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 38
Откуда: Ульяновск
Имя: Александр

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

#13

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

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

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

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

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

#14

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

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

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

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

#15

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

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

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

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

#16

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

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

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

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

#17

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

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

Ответить

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость