Как выполнить итерации отдельных символов в строке Lua?

Вы можете использовать регулярное выражение:

import re

l = ['.', '...', 'Item1']

new_l = []
for i in l:
    if re.fullmatch(r'\.{2,}', i):
        new_l.extend(j for j in i)
    else:
        new_l.append(i)

print(new_l)
# ['.', '.', '.', '.', 'Item1']
82
задан Cœur 30 January 2019 в 02:54
поделиться

2 ответа

В lua 5.1 вы можете перебирать символы строки this двумя способами.

Базовым циклом будет:

for i = 1, #str do
    local c = str:sub(i,i)
    -- do something with c
end

Но может быть более эффективно использовать шаблон с string.gmatch () , чтобы получить итератор по символам:

for c in str:gmatch"." do
    -- do something with c
end

Или даже использовать string.gsub () для вызова функции для каждого символа:

str:gsub(".", function(c)
    -- do something with c
end)

Во всем вышесказанном я воспользовался тем фактом, что модуль string установлен как метатаблица для всех строковых значений, поэтому его функции могут вызываться как члены с использованием : обозначение. Я также использовал (новый для 5.1, IIRC) # , чтобы получить длину строки.

Лучший ответ для вашего приложения зависит от множества факторов, и тесты производительности вам помогут, если производительность будет иметь значение.

120
ответ дан 24 November 2019 в 09:16
поделиться

If you're using Lua 5, try:

for i = 1, string.len(str) do
    print( string.sub(str, i, i) )
end
11
ответ дан 24 November 2019 в 09:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: