Как выделить неанглийские слова, разделенные пробелами в Lua?

У меня есть эта строка

"Hello there, this is some line-aa."

как нарезать его в массив, как это?

Hello
there,
this
is
some
line-aa.

это то, что я пробовал до сих пор

function sliceSpaces(arg)
  local list = {}
  for k in arg:gmatch("%w+") do
    print(k)
    table.insert(list, k)
  end
  return list
end

local sentence = "مرحبا يا اخوتي"
print("sliceSpaces")
print(sliceSpaces(sentence))

этот код работает для английского текста, но не для арабского, как я могу заставить его работать и для арабского?

1 ответ

Решение

Строки Lua - это последовательности байтов, а не символы Юникода. Шаблон %w соответствует буквенно-цифровым символам, но применяется только к ASCII.

Вместо этого используйте %S чтобы соответствовать непробельный символ:

for k in arg:gmatch("%S+") do
Другие вопросы по тегам