(Lua вроде бы, это надстройка на с++ или дополнительные библиотеки) и тогда по идее в lua должны работать все функции си, так вот в си есть замечательный оператор
Код
"вася/петя/саша".Split('/');
для деления строки по символу в массив значений , можно ли на lua воспользоваться этим методом и если можно, то как? А если нельзя, то как это можно сделать? (мне бы хотелось получить числа, начиная с 5й по счету колонки и до конца).
Андрей написал: ругается, похоже на то, что lua никто не объяснил, что он должен понимать этот метод
Его и нету в луа. Но я сверху добавил ссылку на аккаунт какого то парня на Гихабе, кто сделал жто дополнение. ниже привожу код с его аккаунта. Этот код нужно просто вставить в луа скрипт и тогда все заработает.
Код
function string:split(delimiter)
local result = { }
local from = 1
local delim_from,
delim_to = string.find( self, delimiter, from )
while delim_from do
table.insert( result, string.sub( self, from , delim_from-1 ) )
from = delim_to + 1
delim_from, delim_to = string.find( self, delimiter, from )
end
table.insert( result, string.sub( self, from ) )
return result
end
Вот так вот, правильнее вставить будет: (в прошлом сообщении один лишний перенос строки был)
Код
function string:split(delimiter)
local result = { }
local from = 1
local delim_from, delim_to = string.find( self, delimiter, from )
while delim_from do
table.insert( result, string.sub( self, from , delim_from-1 ) )
from = delim_to + 1
delim_from, delim_to = string.find( self, delimiter, from )
end
table.insert( result, string.sub( self, from ) )
return result
end
Андрей написал: Вот так вот, правильнее вставить будет:
спасибо, в ссылку я видимо не вьехал, сделал по кривому,
Код
function main()
local s1={};
local n1=0;
local S="GAZA [TQBR],15,20160519,114500,432.20,432.45,430.64,431.00,16.00";
for word in string.gmatch(S, "%d+") do
n1=n1+1;
s1[n1]=word
end
for i=4,13,2 do
message(s1[i]..'.'..s1[i+1]);
sleep(1000);
end
end
Не, толку не хватило разобраться, попробую еще позднее подумать, с функциями у меня слабовато идет. Да и не понял еще с каким отладчиком надежнее работать, сперва decoda понравился, потом заметил, что он капризно работает, quik подвешивает иногда, еще видел ссылки на SciTE что тоже нравится людям и как редактор и как отладчик, попробую еще на нем, а ваш код крутил, вертел, что то не хочет работать. Ругается.
Код
lua:80: unexpected symbol near 'С' (в коде всего 23 строки, 80 и нет совсем, откуда он ее взял)
Код
function string:split(delimiter)
local result = { }
local from = 1
local delim_from, delim_to = string.find( self, delimiter, from )
while delim_from do
table.insert( result, string.sub( self, from , delim_from-1 ) )
from = delim_to + 1
delim_from, delim_to = string.find( self, delimiter, from )
end
table.insert( result, string.sub( self, from ) )
return result
end
function main()
S = "Hello,World";
S:split(",");
message(result[1]);
end
Раз уж я взялся отвечать, то попробую до конца помочь)) Снизу полный рабочий пример =)
Код
function main()
S = "Hello,World";
res = S:split(",");
message(res[1]);
message(res[2]);
end;
function string:split(delimiter)
local result = { }
local from = 1
local delim_from, delim_to = string.find( self, delimiter, from )
while delim_from do
table.insert( result, string.sub( self, from , delim_from-1 ) )
from = delim_to + 1
delim_from, delim_to = string.find( self, delimiter, from )
end
table.insert( result, string.sub( self, from ) )
return result
end
Андрей написал: Раз уж я взялся отвечать, то попробую до конца помочь))
Спасибо большое, тяжело признаваться в тупости, но стараюсь разобраться с проблемой до конца по возможности, разрешите еще спросить, на чем можно отлаживать код? Мне нужен простого пошаговый режим при отладке с выводом значений переменных и все (без изысков), так и не могу понять в какой программе это можно делать.
Я не люблю луа, так что с ним приходится только для примеров сталкиваться. делаю сейчас для себя некий API простенький для подключения к квику из С++. А Луа использую только что бы примеры функций написать (а далее их уже переписываю на плюсах). Так что с отладчиком не помогу к сожалению.
string.gsub(s, "(%d+%.*%d*)", function (n) table.insert(t, tonumber(n)) end)
отловит в строке s все числа, в т.ч. содержащие десятичную точку и поместит их в таблицу t в виде чисел. Если нужно отлавливать еще и отрицательные числа, то в начале строки шаблона нужно добавить "[+-]?"
Андрей написал: Я не люблю луа, так что с ним приходится только для примеров сталкиваться
Это конечно дело каждого на вкус и цвет как говориться суда нет, но пишут, что lua самый быстрый язык, а это для квика принципиально, так как тиковые значения идут в микросекундах, если не в нано, а с++ под виндой работает в лучшем случае от 20 миллисекунд и выше, хотя платформа windows и там и тут, и откуда в lua обозначено время в микросекундах не очень мне понятно, но я только начал разбираться, может со временем что-то прояснится. И второе мне почему то кажется, что один язык работает лучше чем 2 вместе, с++ ведь все равно использует библиотеки lua при роботе.Но в любом случае, вы мне очень помогли, спасибо.