Перейти к содержимому
  • 0
bob558

Разделить строку на символы - русский текст

Вопрос

Вот такой пример программы:

 

s = "privet"


a = string.len(s)


for l=1, a do
m = string.byte(s,l)
print (m)
end

На выходе получим 112, 114, 105, 118, 101, 116

 

Но если текст будет русским, то на каждый символ будет по два трехзначных числа. А это уже не очень удобно.

 

Читал, что можно как-то разделить с помощью string.gmatch(s, "%w+"), но как это сделать я не понял.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендуемые сообщения

Вот такой пример программы:

s = "privet"
a = string.len(s)
for l=1, a do
m = string.byte(s,l)
print (m)
end

На выходе получим 112, 114, 105, 118, 101, 116

Но если текст будет русским, то на каждый символ будет по два трехзначных числа. А это уже не очень удобно.

Читал, что можно как-то разделить с помощью string.gmatch(s, "%w+"), но как это сделать я не понял.

...
s = 'С Новым Годом"
for i = 1, unicode.len(s) do
  print( unicode.sub(s, i, i) )
end
...

http://ocdoc.cil.li/api:unicode

http://www.lua.org/manual/5.2/manual.html#6.4

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
s = "С новым Кодом"
for letter in unicode.gmatch(s, "%w") do
  print(letter)
end

(написал только проснувшись; код не работает)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
s = "С новым Кодом"
for letter in unicode.gmatch(s, "%w") do
  print(letter)
end

В unicode есть gmatch?

о_О

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В unicode есть gmatch?

о_О

:facepalm:

Нету, конечно же, зато был сонный я.

А string.match не работает с русским.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Для Lua 5.3

local s = "привет"
for _, code in utf8.codes(s) do
    print(code)
end

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...