Автор Тема: isalpha и локаль  (Прочитано 4800 раз)

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
isalpha и локаль
« : Май 01, 2013, 04:34:38 pm »
В Lua регулярки используют сишную функцию isalpha. Как сделать чтобы русские буквы тоже обрабатывались?

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: isalpha и локаль
« Ответ #1 : Май 01, 2013, 04:50:54 pm »
Вроде нашел как локаль установить:
Цитировать
print(os.setlocale('Russian_Russia.1251'))
local s = "  ю   g  "
print(s:match('%a'))

Но гадость не работает чегой-то :(

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: isalpha и локаль
« Ответ #2 : Май 01, 2013, 04:56:09 pm »
Хм... Не работает в LuaJIT. В интерпретаторе все пашет как надо...

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: isalpha и локаль
« Ответ #3 : Май 01, 2013, 06:23:47 pm »
А почему локаль как-то нестандарнтно записывается?
Может, попробовать так: "ru_RU.UTF-8"?

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: isalpha и локаль
« Ответ #4 : Май 01, 2013, 06:25:00 pm »
или хотя бы вместо 1251 писать CP1251

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: isalpha и локаль
« Ответ #5 : Май 01, 2013, 06:52:00 pm »
А там по разному можно. ".1251", "Russian" и т.д.
В интерпретаторе Lua работает. В LuaJIT нет (локаль переключается, но регулярки русские символы не воспринимают)

Если указывать "ru_RU.UTF-8" или "CP1251" то даже локаль не переключается

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: isalpha и локаль
« Ответ #6 : Май 01, 2013, 07:10:51 pm »
"isalpha" в исходниках LuaJIT нет...
Вот подстава  :(

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: isalpha и локаль
« Ответ #7 : Май 01, 2013, 09:31:15 pm »
Написал разработчику об этом. Он ответил что LuaJIT не поддерживает локали для регулярок, и в таких случаях нужно использовать диапазоны типа [А-я]