Форум программистов, компьютерный форум, киберфорум
Наши страницы
Lua
Войти
Регистрация
Восстановить пароль
 
SEREGIUS
0 / 0 / 0
Регистрация: 18.02.2017
Сообщений: 8
#1

Разбить строку по нескольким символам и занести в таблицу

26.03.2018, 10:35. Просмотров 192. Ответов 3
Метки нет (Все метки)

Приветствую.
Получаю от устройства таку строку : {"ver":"1","RIMON":"0.2","RMT":"CW","ROP":"Off","RPP":"Off","RCT":"32.0","RBT":"33.0","RET":"31","STA":"67108864","RID": "YLR-1500-MM-WC","RFV":"32.7.101;2.95;3.7.1","RSN":"R18020185","RCS":"0.0","RPW":"10.000","RDC":"10.0","RDCmax":"99.0","RPRR":"10.0", "REC":"1","RMEC":"0","RLHN":"IPG-A15-0044","RDHCP":"OFF","RIP":"10.9.9.10","RMASK":"255.255.255.0","RDGW":"10.9.9.5","RMAC":"D8-80-39-59-D8-95","FST":"10","RPRRL":"1.0","RPRRH":"50000.0","RBAUD":"8","RCFG":"141","WFCFG":"0","WFID":"0"}
Строка может быть разной длины, но кол-во параметров не меняется. Не могу сообразить как её разбить и запихнуть в таблицу. Читаю про паттерны, но что то вижу только фигу.
Нужно следующее:
t={}
t[1] = 1
t[2] = 0.2
t[3] = CW
....
или
t={}
t[ver] = 1
t[RIMON] = 0.2
t[RMT] = CW
....
Спасибо за помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.03.2018, 10:35
Ответы с готовыми решениями:

Как разбить строку на подстроки по нескольким символам
Рабочий код на VB по разделению строки Dim water() As String = Split(File(j),...

Разбить строку на слова и занести в данные в таблицу
Собственное по отдельности задачи вроде как элементарны и не знаю с какой...

Как разбить строку и занести значения в таблицу?
Здравствуйте, форумчане. Подскажите пожалуйста как правильно разбить строку и...

Читать файл словами или разбить строку по пробельным символам
declare -a a a=(`cat "text.txt"`) for i in ${a} do echo $i done ...

Разбить строку по нескольким разделителям
Здравствуйте! Есть строка вида:...

3
vantfiles
33 / 33 / 16
Регистрация: 07.05.2013
Сообщений: 128
27.03.2018, 10:18 #2
Ну, как-то так:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
local str = [[{"ver":"1","RIMON":"0.2","RMT":"CW","ROP":"Off","RPP":"Off","RCT":"32.0","RBT":"33.0","RET":"31","STA":"67108864","RID": "YLR-1500-MM-WC","RFV":"32.7.101;2.95;3.7.1","RSN":"R18020185","RCS":"0.0","RPW":"10.000","RDC":"10.0","RDCmax":"99.0","RPRR":"10.0", "REC":"1","RMEC":"0","RLHN":"IPG-A15-0044","RDHCP":"OFF","RIP":"10.9.9.10","RMASK":"255.255.255.0","RDGW":"10.9.9.5","RMAC":"D8-80-39-59-D8-95","FST":"10","RPRRL":"1.0","RPRRH":"50000.0","RBAUD":"8","RCFG":"141","WFCFG":"0","WFID":"0"}]]
 
local t = {}
local p = ""(%w+)":"([%w%d%-%;%.]+)""
 
-- делаем таблицу вида { {k,v}, {k,v}, {k,v} } - в этом случае соблюдается последовательность пар ключ-значение
 
for k, v in string.gmatch( str, p ) do
    table.insert( t, { k, v } )
end
 
-- ...и выводим ее
 
for i = 1, #t do
    print( t[i][1], " : ", t[i][2] )
end
Добавлено через 8 минут
При копировании форум съел бэкслеши, вот так строка должна выглядеть:

local p = ""(%w+)":"([%w%d%-%;%.]+)""

Добавлено через 3 минуты
...опять съел... еще раз...
C
1
local p = ""(%w+)":"([%w%d%-%;%.]+)""
Добавлено через 7 минут
...не пойму, в чем дело, короче говоря, символы двойных кавычек в паттерне нужно экранировать обратными слешами...
1
SEREGIUS
0 / 0 / 0
Регистрация: 18.02.2017
Сообщений: 8
27.03.2018, 23:05  [ТС] #3
Спасибо. Я уже разобрался. На др форуме подсказали что это "JSON" строка и для её разбора легко всё гуглится.
Код
local JSON = require ("json")
local a = '{строка Json}'
local b = JSON:decode(a)
print(tostring(b["..."]))
0
vantfiles
33 / 33 / 16
Регистрация: 07.05.2013
Сообщений: 128
27.03.2018, 23:20 #4
Ну, главное, что все состоялось
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.03.2018, 23:20

Разбить строку и занести в массив по правилу
Добрый день есть строка например тестовая строчка, test "тестовая...

Как разбить строку по нескольким делиметрам
есть строка char *a = "123497, 56783; 09872!, 65443; ;221345, 623789 ";...

Разбить каждую строку файла на слова, и занести их в двумерный массив
Есть одномерный массив со считанными данными из файла .txt. Нужно было разбить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru