一个任务
用户独立编辑脚本内的表格,它将字符串的每个单独字符替换为另一个字符/字符组合,然后运行脚本并获得他需要的内容。应该允许这个想法使用任何 UTF-8 字符。
--[[ Lua 5.3 ]]--
str = "ABC あしひ" --строка, которую нужно обработать
characters = { --таблица для замены символов, слева - совпадение, справа - замена
" ", "_",
"A", "1",
"B", "2",
"C", "3",
"あ", "a",
"し", "b",
"ひ", "c",
}
unknown_character = "*" --default если символ не найден в таблице
output = "" --сюда будут добавляться результаты совпадений
for i = 1, string.len(str) do --цикл чтения каждого символа строки
local c = string.sub(str, i, i) --получить следующий символ строки
local replaced_flag = false --флаг того, что символ был найден, по умолчанию false
for j, _ in ipairs(characters) do --цикл чтения таблицы
if j % 2 ~=0 then --проверка каждой нечетной ячейки таблицы
if c == characters[j] then --если найдено совпадение символа из строки и символа из ячейки
c = characters[j + 1] --то заменить символ на содержимое четной ячейки
replaced_flag = true --и выставить флаг
break --досрочный выход из цикла, раз совпадение найдено
end
end
end
if replaced_flag == true then --если найдено совпадение
output = output..c --присоединить его к общему результату
else --в противном случае
output = output..unknown_character --присоединить default
end
end
print(output) --показать итоговый результат
io.read()
期待
123_abc
结果
123_*********
问题
一个日文字母实际上占 3 个字符,一个表格单元格一次存储 3 个字符。但是当我从一个字符串中读取一个日文字母到变量c时,我没有得到整个字母,而是那个字母的 1/3。这会导致表格不匹配,因此有 9 个字符 *(3 个字母,每个字母 3 个字符)。
你能告诉我如何才能完整地阅读这封信吗?我无法提前知道需要读取多少个字符串才能正确比较。