String.find (Lua)
Версия от 11:18, 28 августа 2019; Tatikoma (обсуждение | вклад)
Содержание
Описание
string.find - возвращает позицию подстроки в строке. Для поиска можно использовать регулярные выражения.
Синтаксис
Привязка к окну: нет.
Работа со свернутым окном: да.
Параметры заключаются в скобки и разделяются запятыми.
string.find (<s>, <шаблон> [, стартовая_позиция_поиска [, true])
Или:
<s>:find(<шаблон> [, стартовая_позиция_поиска [, true]])
Где:
s - строка.
шаблон - что искать или регулярное выражение.
стартовая_позиция_поиска - стартовая позиция поиска, по умолчанию 1. Необязательный параметр.
true - если указано производится поиск подстроки как есть. Необязательный параметр.
Поддерживаемые опции регулярных выражений:
. -- Любой символ %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)
Tostring (Lua)
String.format (Lua)
String.match (Lua)
String.gmatch (Lua)
String.format (Lua)