Lua - извлечение индекса из строки - PullRequest
0 голосов
/ 25 июня 2018

У меня есть строка lua s1, как показано ниже.

s1='..{"login":{"username":"necs_0","url":"sip:192.168.1.218","contact":"sip:necs_0@192.168.1.218:61376","serverip":"192.168.1.216","serverport":"4080"}}';

Первые два байта, показанные как .., содержат два байта для длины в формате с прямым порядком байтов.Затем после {"login":{"username":"necs_ присутствует значение индекса 0 .Мне нужно извлечь это значение индекса.

Я написал ниже скрипт, он работает.Я хочу знать, какой самый эффективный способ написать это.

s1='..{"login":{"username":"necs_0","url":"sip:192.168.1.218","contact":"sip:necs_0@192.168.1.218:61376","serverip":"192.168.1.216","serverport":"4080"}}';

-- Advance first two bytes
s2 = s1:sub(3);

-- Find the index of necs_
index1 = s2:find('necs_', 1, true);

-- Find the index of "
index2 = s2:find('"', index1, true);

-- Extract the data between necs_ and "
s3=string.sub(s2,index1+5,index2-1);

-- Print the extracted data
print(s3)

Несколько вещей, которые меня беспокоят, в строке s2 = s1:sub(3), s2 создается новая строка и содержимое из s1 копируется в новую строкуs2.В случае C я мог бы сделать как s2 = s1 + 2, таким образом, я мог бы избежать копирования.

Тогда я использую find и sub apis.Есть ли более эффективный вариант сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...