Я не верю, что в Lua есть функция split (), такая как Ruby или Perl.
Я обнаружил, что этот парень создал lua-версию функции разделения Perl: http://lua-users.org/lists/lua-l/2011-02/msg01145.html
Если вы можете гарантировать, что перед аргументом будет только 1 слово, и это слово не будет содержать пробелов, вы можете прочитать в этой строке, запустить на ней функцию разделения и использовать значение индекса 1 возвращаемого массива, как вы хотите.
Вы также можете проверить это на ошибку и убедиться, что вы получили 'C: \' в ожидаемом каталоге, или убедитесь, что строка == установлена на 'On' или 'Off'. Из-за использования жестко запрограммированного значения индекса я действительно рекомендую вам проверить ожидаемое значение на ошибку. Нет ничего хуже, чем ошибиться в предполагаемом значении.
Если обнаружена ошибка, обязательно зарегистрируйте или распечатайте ее на экране, чтобы вы знали об этом.
Это может выявить ошибки, когда введенная строка может быть неправильной.
Простой код, моделирующий то, что я предлагаю вам сделать:
line = "directory C:\Program Files\abc\def/";
contents = line.split(" "); --Split using a space
directory = contents[2]; --Here is your directory
if(errorCheckDir(directory))
--Use directory
end
РЕДАКТИРОВАТЬ: В ответ на комментарии ниже Lua действительно начинает индексирование с 1, а не с 0. Кроме того, в случае, если каталог содержит пробелы (что вероятно) вместо простого использования содержимого [2], я бы перебрал все содержимое, кроме индекса 1, и соберите каталог, убедившись, что между каждым присоединяемым индексом есть необходимое пространство.
Таким образом, в приведенном выше случае содержимое [2] и содержимое [3] нужно было бы снова сшить вместе с пробелом между ними, чтобы восстановить правильный каталог.
directory = contents [2] .. "" ..contents [3]
Это можно легко автоматизировать с помощью функции, которая имеет цикл и возвращает правильный каталог:
function recoverDir(contents)
directory = "";
--Recover the directory
for i=2, table.getn(contents) do
directory = directory..contents[i].." ";
end
--strip extra space on the end
dirEnd = string.len(directory);
directory = string.sub(directory,1,dirEnd-1);
return directory; --proper directory
end
person
Dean Knight
schedule
21.08.2012