• Страница 1 из 1
  • 1
Работа со строками
Nyll
Здравствуйте. Сегодня мы будем учиться работать со строками.

Инструкция по созданию 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.
Маме беркута привет!
Сообщение # 1 отредактировано WJP - Воскресенье, 18.03.2012, 13:18
  • Страница 1 из 1
  • 1
Поиск: