Как получить значение из файла txt

Страницы: 1
RSS
Как получить значение из файла txt
 
Добрый день!

Прошу подсказать.
Например есть файл bot.txt.
Внутри файла 2 строки со следующими значениями

1;2;3;4
10;5;5;6

Какой фнукцией lua можно получить значение из 2 строки, четвертое значение - 6.
Чтобы использовать в дальнейшем для работы.
 
IsRun = true;

function main()

  f = io.open(getScriptPath().."\\bot.txt","r+")

  for line in f:lines() do message(tostring(line)) end

  f:close();
 
  while IsRun do
     sleep(100)
end
end

function OnStop()
  IsRun = false;
end
 
Помогите)
 
я бы вам вместо того, чтобы читать и разбирать текстовый файл предложил бы вариант записывать данные в файл сразу в формате языка lua и потом читать их сразу в lua таблицу. Конечно, если есть возможность изменить формат сохраняемого файла.

Таблицы в файле

но можно, конечно, читать ваш файл построчно, как делаете вы и разбирать каждую строку например этой функцией. Этот вариант похуже на мой взгляд
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Если классическая задача разбиения строки с разделителем на отдельные элементы, то регулярные выражения помогут.
В частности итератор string.gmatch или написать свой итератор. Или, если формат постоянный (число параметров постоянно), то string.match.

Для примера string.match для чтения трех числовых параметров, разделенных запятой:

var1,var2,var3 = string.match(str,"(%d*),(%d*),(%d*)")


Проще всего воспользоваться поиском с ключевыми словами  "lua split string".
 
Спасибо огромное.
Сижу разбираюсь)
 
Цитата
Rusyan написал:
Помогите)
Код
f=io.open(getScriptPath().."\\bot.txt","r")
line1=tostring(f:read("*l"))
line2=tostring(f:read("*l"))
f:close()
v1,v2,v3,v4=string.match(line2,"(%d*);(%d*);(%d*);(%d*)")
message("find: "..v4)
 
Цитата
BlaZed написал:
Цитата
Rusyan написал:
Помогите)
 
Код
  f =  io.open ( getScriptPath () .. "\\bot.txt","r")
line1 = tostring(f:read( "*l" ))
line2 = tostring(f:read( "*l" ))
f:close()
v1,v2,v3,v4 =  string.match (line2,"(%d * );(%d * );(%d * );(%d * )")
 message ( "find: "  .. v4)  
Вот это да. Благодарю за подарок)
Страницы: 1
Читают тему
Наверх