|
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
|
||||||
Разобрать строку (распарсить)28.11.2016, 11:08. Показов 7671. Ответов 35
Метки нет (Все метки)
Всем привет, как можно правильно распарсить строку приерного вида?
msg = "temp1 = 25C, temp2=33, humidity = 85, light level = 57 \r"; Делаю вот так:
Добавлено через 5 минут Либо последняя....
0
|
||||||
| 28.11.2016, 11:08 | |
|
Ответы с готовыми решениями:
35
Распарсить строку |
|
14293 / 9378 / 1352
Регистрация: 21.01.2016
Сообщений: 35,360
|
||||||
| 28.11.2016, 11:16 | ||||||
|
Jman, у тебя в лейбл, по очереди, записываются все полученные тобой строки. Каждое последующе переписывает предыдущее значение:
0
|
||||||
|
Хитрая блондиночка $)
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
|
||||||
| 28.11.2016, 11:24 | ||||||
|
С коленки:
1
|
||||||
|
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
|
|
| 28.11.2016, 11:32 [ТС] | |
|
0
|
|
|
14293 / 9378 / 1352
Регистрация: 21.01.2016
Сообщений: 35,360
|
|
| 28.11.2016, 11:33 | |
|
0
|
|
|
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
|
|
| 28.11.2016, 11:34 [ТС] | |
|
Как их отфильтровать? по порядку тогда? Тямы не хватает. Лейблов аж 4ре =)
0
|
|
|
14293 / 9378 / 1352
Регистрация: 21.01.2016
Сообщений: 35,360
|
|
| 28.11.2016, 11:38 | |
|
Jman, перебирай полученный массив в цикле, проверяй что содержится в данной строке (через
String.Contains()) и, присваивай значение соответствующему лейблу.
0
|
|
|
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
|
|
| 28.11.2016, 11:44 [ТС] | |
|
Покажите пожалуйста на примере... Если не трудно.
0
|
|
|
14293 / 9378 / 1352
Регистрация: 21.01.2016
Сообщений: 35,360
|
||||||
| 28.11.2016, 11:54 | ||||||
Сообщение было отмечено Jman как решение
Решение
Jman, ну как-то так:
0
|
||||||
|
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
|
||||||
| 28.11.2016, 11:58 [ТС] | ||||||
|
Получается код будет завязан на строки. Если мне необходимо будет изменить в принимаемых данных, придется везде корректировать значение подстрок.
Добавлено через 1 минуту И да, что это такое? Сделал по примеру, но не понимаю, на делегат не похоже.
0
|
||||||
|
14293 / 9378 / 1352
Регистрация: 21.01.2016
Сообщений: 35,360
|
|||||||
| 28.11.2016, 12:00 | |||||||
|
Jman, объяви класс со строками-константами, и используй его везде.
1
|
|||||||
|
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
|
|
| 28.11.2016, 12:01 [ТС] | |
|
Спасибо! Вы даете очень ценные советы. Такой вопрос... После слова темп идет значение, оно будет всегда изменятся, как его выводить в лейбл данным способом, что вы показали выше?
0
|
|
|
14293 / 9378 / 1352
Регистрация: 21.01.2016
Сообщений: 35,360
|
|
| 28.11.2016, 12:11 | |
|
Jman, ну, либо выводить как оно есть (например "temp1=87.1"), либо разбивать (String.Split) по знаку "=" и выводить значение с индексом 1 (т.е. ту половину, что идёт после знака равенства).
Можно использовать для этих целей регулярные выражения. Тогда из исходной строки сразу можно будет выдёргивать необходимые значения.
0
|
|
|
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
|
||
| 28.11.2016, 12:12 [ТС] | ||
|
Может я неправильным путем иду. У меня есть строка с динамическими данными вида:
"temp1 = 25C, temp2=33, humidity = 85, light level = 57 Которая шурует в ком порт ПК. Я ее разбиваю на 4 лейбла и вывожу. Это правильный подход? Данные будут изменяться в реальном времени.
0
|
||
|
14293 / 9378 / 1352
Регистрация: 21.01.2016
Сообщений: 35,360
|
||||||
| 28.11.2016, 12:18 | ||||||
Сообщение было отмечено Jman как решение
Решение
Jman, примерно так:
Jman, по-хорошему, нужно держать в коде некий класс (модель данных), в котором должны содержаться полученные значения. Записывать туда эти значения нужно только раз - при получении данных от устройства. И потом можно будет где угодно и как угодно эти данные отображать. Хоть в консоль, хоть в метку, хоть на странице...
0
|
||||||
|
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
|
||||||
| 28.11.2016, 12:36 [ТС] | ||||||
|
Спасибо! Все работает! Скажите пожалуйста, для остальных лейблов если сделать (пока без отдельного класса, что бы отладить), придется делать копии делегатов только для разных лейблов?
0
|
||||||
|
14293 / 9378 / 1352
Регистрация: 21.01.2016
Сообщений: 35,360
|
|
| 28.11.2016, 12:48 | |
|
Jman, нет. Метод
Invoke() выполняет код делегата в UI-потоке. Можно весь код поместить в один делегат, только разбить на методы для каждого лейбла, что бы каши из кода не было.
0
|
|
|
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
|
||||||
| 28.11.2016, 13:21 [ТС] | ||||||
|
Получается что мне нужно будет создавать еще методы в методе
0
|
||||||
|
14293 / 9378 / 1352
Регистрация: 21.01.2016
Сообщений: 35,360
|
|
| 28.11.2016, 13:39 | |
|
Jman, ты можешь всё поместить в один Invoke(). Просто куча кода в одном месте будет. Некрасиво. Распарси строку с параметрами, а потом в Invoke задай значение всем лейблам разом. Парсинг разбей на четыре части, по методу на параметр.
0
|
|
|
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
|
||||||||||||||||||||||||||
| 28.11.2016, 14:27 [ТС] | ||||||||||||||||||||||||||
|
Так, вот так пойдет? Правильно - ли?
В консоли вроде работает
0
|
||||||||||||||||||||||||||
| 28.11.2016, 14:27 | |
|
Помогаю со студенческими работами здесь
20
Распарсить строку
Распарсить строку
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536
Одним из. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|