String.gsub (Lua): различия между версиями
Tatikoma (обсуждение | вклад) (Новая страница: «== Описание == '''string.gsub''' - возвращает копию строки, в которой все вхождения 'шаблона поиска'...») |
Tatikoma (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
== Описание == | == Описание == | ||
'''string.gsub''' - возвращает копию строки, в которой все вхождения 'шаблона поиска' заменяются на 'шаблон замены', который может быть строкой, таблицей или функцией. Также возвращает как второе значение – общее количество проведенных подстановок. | '''string.gsub''' - возвращает копию строки, в которой все вхождения 'шаблона поиска' заменяются на 'шаблон замены', который может быть строкой, таблицей или функцией. Также возвращает как второе значение – общее количество проведенных подстановок. | ||
− | + | <br>Если 'шаблон замены' строка, то используется ее значение для замены. Символ % работает как символ со специальным назначением: любая последовательность в 'шаблоне замены' в виде %n, где n от 1 до 9, заменяется на n-ную захваченную подстроку. Последовательность %0 заменяется на найденную подстроку. | |
− | + | <br>Если 'шаблон замены' является таблицей, то она запрашивается для каждого сравнения, с использованием первого захваченного значения как ключ; если шаблон не содержит захватов, то используется результат простого сравнения как ключ. | |
− | + | <br>Если 'шаблон замены' является функцией, то эта функция вызывается каждый раз, когда обнаруживается совпадение. В качестве параметров ей передаются все захваченные подстроки; если шаблон не содержит захватов, то передается результат сравнения как один параметр. | |
== Синтаксис == | == Синтаксис == | ||
Привязка к окну: нет. | Привязка к окну: нет. | ||
− | + | <br>Работа со свернутым окном: да. | |
− | + | <br>Параметры заключаются в скобки и разделяются запятыми. | |
− | string.gsub ( | + | string.gsub (<nowiki><s>, <шаблон поиска>, <шаблон замены>, [n])</nowiki> |
Или: | Или: | ||
− | + | <nowiki><s>:gsub(<шаблон поиска>, <шаблон замены>, [n])</nowiki> | |
Где: | Где: | ||
− | + | <br>'''s''' - строка. | |
− | + | <br>'''шаблон поиска''' - что искать или регулярное выражение. | |
− | + | <br>'''шаблон замены''' - на что заменить. | |
− | + | <br>'''n''' - сколько максимум раз можно сделать замену. | |
− | + | <br><br>Поддерживаемые опции регулярных выражений: | |
. -- Любой символ | . -- Любой символ | ||
%a -- Буква (только англ.!) | %a -- Буква (только англ.!) | ||
Строка 113: | Строка 113: | ||
[[Tonumber (Lua)]] | [[Tonumber (Lua)]] | ||
− | + | <br>[[Tostring (Lua)]] | |
− | + | <br>[[String.find (Lua)]] | |
− | + | <br>[[String.match (Lua)]] | |
− | + | <br>[[String.gmatch (Lua)]] | |
− | + | <br>[[String.format (Lua)]] |
Текущая версия на 11:19, 28 августа 2019
Содержание
Описание
string.gsub - возвращает копию строки, в которой все вхождения 'шаблона поиска' заменяются на 'шаблон замены', который может быть строкой, таблицей или функцией. Также возвращает как второе значение – общее количество проведенных подстановок.
Если 'шаблон замены' строка, то используется ее значение для замены. Символ % работает как символ со специальным назначением: любая последовательность в 'шаблоне замены' в виде %n, где n от 1 до 9, заменяется на n-ную захваченную подстроку. Последовательность %0 заменяется на найденную подстроку.
Если 'шаблон замены' является таблицей, то она запрашивается для каждого сравнения, с использованием первого захваченного значения как ключ; если шаблон не содержит захватов, то используется результат простого сравнения как ключ.
Если 'шаблон замены' является функцией, то эта функция вызывается каждый раз, когда обнаруживается совпадение. В качестве параметров ей передаются все захваченные подстроки; если шаблон не содержит захватов, то передается результат сравнения как один параметр.
Синтаксис
Привязка к окну: нет.
Работа со свернутым окном: да.
Параметры заключаются в скобки и разделяются запятыми.
string.gsub (<s>, <шаблон поиска>, <шаблон замены>, [n])
Или:
<s>:gsub(<шаблон поиска>, <шаблон замены>, [n])
Где:
s - строка.
шаблон поиска - что искать или регулярное выражение.
шаблон замены - на что заменить.
n - сколько максимум раз можно сделать замену.
Поддерживаемые опции регулярных выражений:
. -- Любой символ %a -- Буква (только англ.!) %A -- Любая буква (русская), символ, или цифра, кроме английской буквы %c -- Управляющий символ %d -- Цифра %D -- Любая буква, или символ, кроме цифры %l -- Буква в нижней раскладке (только англ.!) %L -- Любая буква, символ, или цифра, кроме английской буквы в нижней раскладке %p -- Символ пунктуации %P -- Любая буква, символ, или цифра, кроме символа пунктуации %s -- Символ пробел %S -- Любая буква, символ, или цифра, кроме символа пробела %u -- Буква в верхней раскладке (только англ.!) %U -- Любая буква, символ, или цифра, кроме английской буквы в верхней раскладке %w -- Любая буква, или цифра (только англ.!) %W -- Любой символ, или буква (русская), кроме английской буквы, или цифры %x -- Шестнадцатеричное число %X -- Любая буква, или символ, кроме цифры, или английской буквы, используемой в записи шестнадцатеричного числа %z -- Строковые параметры, содержащие символы с кодом 0
Примеры
--lua log ("clear") log ("mode compact") -- очистить лог, компактный режим local str1 = "hello world" -- строка log (str1) local str2 = string.gsub(str1, "world", "user") -- заменить 'world' на 'user' log (str2)
--lua log ("clear") log ("mode compact") -- очистить лог, компактный режим local str1 = "one, two, three, four, five" -- строка log (str1) local str2 = string.gsub(str1, ",", " -") -- заменить ',' на ' -' log (str2)
--lua -- найти запятые, после которых нет пробела, и добавить пробел log ("clear") log ("mode compact") -- очистить лог, компактный режим local str1 = "one, two,three, four,five" -- строка log (str1) local str2 = string.gsub(str1, ",", ", ") -- заменить ',' на ', ' log (str2)
--lua log ("clear") log ("mode compact") -- очистить лог, компактный режим local str1 = "Координаты: X = 360, Y = 638" -- строка log (str1) local str2 = str1:gsub("(%d+)([^%d]+)(%d+)", "%3%2%1") -- поменять координаты: X на Y и Y на X log (str2)
--lua log ("clear") log ("mode compact") -- очистить лог, компактный режим local t = {green = "red", black = "blue"} local str1 = "green, black, black, green" -- строка log (str1) local str2 = string.gsub(str1, "(%a+)", t) -- заменить все слова 'green' на 'red' и 'black' на 'blue' log (str2)
--lua -- найти все числа в строке и умножить их на 2 log ("clear") log ("mode compact") -- очистить лог, компактный режим local str1 = "green, 7, black, 12, green" -- строка log (str1) local str2 = string.gsub(str1, "(%d+)", function(s) return s * 2 end) -- функция вызывается каждый раз, когда обнаруживается совпадение log (str2) local str2, count = string.gsub(str1, "(%d+)", function(s) return s * 2 end) -- в переменную count будет записано количество подстановок log(str2) log(count)
--lua log ("clear") log ("mode compact") -- очистить лог, компактный режим local str1 = "qwe1213rty" -- строка log (str1) local str2 = string.gsub(str1, "%d", "") -- удалить из строки все цифры log (str2)
--lua log ("clear") log ("mode compact") -- очистить лог, компактный режим local str1 = "qwe1213rty" -- строка log (str1) local str2 = string.gsub(str1, "%D", "") -- удалить из строки все кроме цифр log (str2)
--lua log ("clear") log ("mode compact") -- очистить лог, компактный режим local str1 = "1 2 3 4 5 6 7 8 9" -- строка log (str1) local str2 = string.format("%s" .. string.gsub(str1, " ", ", ") .. "%s", "(", ")") -- добавить запятые между числами и заключить всю строку в скобки log (str2)
Смотрите также
Tonumber (Lua)
Tostring (Lua)
String.find (Lua)
String.match (Lua)
String.gmatch (Lua)
String.format (Lua)