Поиск длины строки

Lua:
Поиск длины строки

Как это сделать:

В Lua длину строки можно получить с помощью оператора #. Просто и быстро.

local myString = "Hello, Lua!"
print(#myString)  -- Вывод: 11

Что если ваша строка содержит символы новой строки или является пустой?

local stringWithNewline = "Hello\nLua!"
local emptyString = ""
print(#stringWithNewline)  -- Вывод: 10
print(#emptyString)         -- Вывод: 0

Даже с символами новой строки Lua считает каждый символ. И да, длина пустой строки равна 0.

Подробнее

В старые времена строки в некоторых языках были более сложными. Вам могли понадобиться функции или методы, чтобы получить длину строки. Сегодня, в Lua, это так же прямолинейно, как использование оператора #.

Альтернативы? Если вы работаете с символами Unicode, оператор # может давать сбой с многобайтовыми символами. В этом случае стоит изучить библиотеки вроде utf8. Начиная с Lua 5.3, эта встроенная библиотека появилась в языке.

local unicodeString = "こんにちは" -- Это "Привет" по-японски
print(#unicodeString)  -- Вывод может удивить, если вы не готовы к многобайтовым символам!
print(utf8.len(unicodeString))  -- Вывод: 5 символов, как и ожидалось

Деталь, на которую стоит обратить внимание: Lua хранит строки неизменяемыми и внутренне использует механизм, называемый интернированием строк. Это удобно, поскольку это позволяет экономить память и делает операции с длиной строки быстрыми.

Смотрите также