|
Форум Обсуждение аддонов Разработка аддонов WoW Работа со строками |
Работа со строками |
Здравствуйте. Сегодня мы будем учиться работать со строками.
Инструкция по созданию toc файла - тык Ссылка на предыдущие статью - тык Скачать notepad++ - тык API функции - тык Я покажу Вам пример работы. Но сначала расскажем о функциях, которые будут использоваться в нашем коде. strsplit Code strsplit("delimiter", "subject"[, pieces]) delimiter - Символы, интерпретированные в виде delimiter символов в строке. subject - Строка для разделения. pieces - Число (опционально) - максимальное число частей для создания (последняя часть будет содержать остальные строки (или данные типа); по умолчанию возвращается неограниченное количество частей. Пример 1 Code strsplit("ab", "1a2b3") -- => "1", "2", "3" Пример 2 Code strsplit("ab", "1ab2") -- => "1", "", "2" string.gsub Code string.gsub(s, pattern, replace [, n]) s - Текст. pattern - Шаблон. replace - Замена. Пример 1 Code string.gsub("banana", "(a)(n)", "%2%1") Пример 2 Code string.gsub("banana", "a", "A", 2) table.insert Code table.insert(table, [pos,] value) table - База, в которую мы посылаем информацию. pos - Информация/данные, которые мы посылаем в базу. value - Значение. Работа с кодом Создаем папку для аддона. В папке создаем .toc файл. В .toc файл добавляем строку: Code ## SavedVariables: testbdd testbdd -- база, являющаяся хранилищем информации. Создаем .lua файл, сменив кодировку на utf-8. Вариант 1. Создаем функцию string_test с аргументом msg, editbox. У нас получится Code function string_test(msg, editbox) Далее в функции пишем: Code local msg, arg = msg:match("^(%S*)%s*(.-)$"); Затем создаем следующие условие: Code if msg == "1" then -- string.gsub var1 = " Вариант 1" print(string.gsub("Сегодня я на WoWJP создал интересную тему."..var1, "WoWJP", "(%1)")) -- string.gsub. Берем слово WoWJP в скобки, получается (wowjp). Этот вариант показывает работу с функцией string.gsub, которая добавит к нашему тексту следующую надпись: “Сегодня я на WoWJP создал интересную тему”. Вариант 2. Code elseif msg == "2" then -- strsplit var2 = " Вариант 2" print(strsplit(".net", "WoWJP.net Ворлд оф Варкрафт портал"..var2)) -- strsplit. В этом примере мы удаляем .net. ВАЖНО: символы .,n,e,t удаляются в любом слове заданном нами. Вариант 3. В варианте 3 мы будем сохранять текст в локальную базу аддона. Для этого нами была дописана строка в .toc файле, которая создает базу testbdd. Code elseif msg == "3" and arg ~= "" then -- arg, table.insert, testbdd var2 = " Вариант 3" print(arg) table.insert(testbdd, {arg = arg}). Сохранение в базу аддона (создается таблица arg). --[[Пример сохранения { ["arg"] = "текст", }, -- [номер] ]] Функция table.insert сохраняет наш текст в лок. базу данных адддона, создавая для каждого запроса отдельную таблицу arg. Далее создаем сообщение об ошибки. Задаем ему параметр else. Пример: Code print("ошибка используйте 1, 2, 3") Затем закрываем нашу функцию и параметр if. Пример: Code end end Создаем слеш комманду и привязываем ее к функции string_test. Пример: Code SlashCmdList["STRINGS"] = string_test; Регистрируем слеш комманду и приравниваем ее к STRINGS. Пример: Code SLASH_STRINGS1 = "/string"; Пример полного кода: Code function string_test(msg, editbox) local msg, arg = msg:match("^(%S*)%s*(.-)$"); -- Да да это пробел :d if msg == "1" then -- string.gsub var1 = " Вариант 1" print(string.gsub("Сегодня я на WoWJP создал интересную тему."..var1, "WoWJP", "(%1)")) -- string.gsub - Тут мы берем слово WoWJp и обводим его в скобки (wowjp) elseif msg == "2" then -- strsplit var2 = " Вариант 2" print(strsplit(".net", "WoWJP.net Ворлд оф Варкрафт портал"..var2)) -- strsplit - В этом примере мы удаляем .net. ВАЖНО: символы .,n,e,t удаляются в любом слове заданном нами. elseif msg == "3" and arg ~= "" then -- arg, table.insert, testbdd var2 = " Вариант 3" print(arg) table.insert(testbdd, {arg = arg}) -- Сохранение в базу аддона (создается таблица arg) --[[Пример сохранения { ["arg"] = "текст", }, -- [номер] ]] else -- Если те пункты не выбраны. print("ошибка используйте 1, 2, 3") end end SlashCmdList["STRINGS"] = string_test; SLASH_STRINGS1 = "/string"; На этом наш урок по работе со строками окончен. Спасибо за уделенное Вами время. За помощь в написании статьи спасибо модератору Pr.
Маме беркута привет!
|
| |||
| |||