String.find (Lua)
Версия от 21:36, 27 августа 2019; Tatikoma (обсуждение | вклад) (Новая страница: «== Описание == '''string.find''' - возвращает позицию подстроки в строке. Для поиска можно использо...»)
Содержание
Описание
string.find - возвращает позицию подстроки в строке. Для поиска можно использовать регулярные выражения.
Синтаксис
Привязка к окну: нет. <br>Работа со свернутым окном: да. <br>Параметры заключаются в скобки и разделяются запятыми.
string.find (<nowiki><s>, <шаблон></nowiki> [, стартовая_позиция_поиска [, true])
Или:
<nowiki><s>:find(<шаблон></nowiki> [, стартовая_позиция_поиска [, true]])
Где: <br>s - строка. <br>шаблон - что искать или регулярное выражение. <br>стартовая_позиция_поиска - стартовая позиция поиска, по умолчанию 1. Необязательный параметр. <br>true - если указано производится поиск подстроки как есть. Необязательный параметр. <br><br>Поддерживаемые опции регулярных выражений:
. -- Любой символ %a -- Буква (только англ.!) %A -- Любая буква (русская), символ, или цифра, кроме английской буквы %c -- Управляющий символ %d -- Цифра %D -- Любая буква, или символ, кроме цифры %l -- Буква в нижней раскладке (только англ.!) %L -- Любая буква, символ, или цифра, кроме английской буквы в нижней раскладке %p -- Символ пунктуации %P -- Любая буква, символ, или цифра, кроме символа пунктуации %s -- Символ пробел %S -- Любая буква, символ, или цифра, кроме символа пробела %u -- Буква в верхней раскладке (только англ.!) %U -- Любая буква, символ, или цифра, кроме английской буквы в верхней раскладке %w -- Любая буква, или цифра (только англ.!) %W -- Любой символ, или буква (русская), кроме английской буквы, или цифры %x -- Шестнадцатеричное число %X -- Любая буква, или символ, кроме цифры, или английской буквы, используемой в записи шестнадцатеричного числа %z -- Строковые параметры, содержащие символы с кодом 0
Примеры
--lua local a = "New York" -- строка local start_pos = string.find(a, "Yo") -- искать начальную позицию Yo log (start_pos)
--lua local a = "New York" -- строка local start_pos, end_pos = string.find(a, "York") -- искать начальную и конечную позицию York log (start_pos, end_pos)
--lua local a = "New York" -- строка local start_pos, end_pos = a:find("York") -- альтернативная запись функции log (start_pos, end_pos)
--lua local a = "3 кг яблок и 3 кг груш" -- строка local start_pos = a:find("3") -- найти число 3 в строке log (start_pos) start_pos = a:find("3", 2) -- найти число 3 в строке, начиная со 2й позиции log (start_pos)
Использование регулярных выражений
--lua local str1 = "Координаты: X = 360, Y = 638" -- строка local start_pos, end_pos = str1:find("%d+") -- найти позицию первого числа в строке log(start_pos, end_pos)
--lua local str1 = "Координаты: X = 360, Y = 638" -- строка local start_pos, end_pos, num1 = string.find(str1, "(%d+)") -- найти позицию первого числа в строке и присвоить переменной num1 log(start_pos, end_pos, num1)
--lua local str1 = "Координаты: X = 360, Y = 638" -- строка local _, _, num1 = string.find(str1, "(%d+)") -- если позиции не нужны, то можно использовать _(нижнее подчёркивание) log(num1)
--lua local str1 = "Координаты: X = 360, Y = 638" -- строка local s, e, num1, num2 = string.find(str1, "(%d+), Y = (%d+)") -- найти координаты X и Y, присвоить переменным num1 и num2 log(num1, num2) -- или так str1 = "Координаты: X = 123, Y = 547" -- строка s, e, num3, num4 = string.find(str1, "(%d+)[^%d]+(%d+)") -- [^%d]* - означает любые символы, кроме числа log(num3, num4)
--lua log ("clear") log ("mode compact") local str1 = "С 12:30 до 13:15 обед" -- строка local s, e, num1, num2, num3, num4 = str1:find("(%d+)[^%d]+(%d+)[^%d]+(%d+)[^%d]+(%d+)") -- найти 4 числа, между числами могут присутствовать любые символы log(num1, num2) log(num3, num4)
Смотрите также
Tonumber (Lua) <br>Tostring (Lua) <br>String.format (Lua) <br>String.match (Lua) <br>String.gmatch (Lua) <br>String.format (Lua)