/ / validate_format_of низ с aêìõü в релси - руби на релси, рубин, кодиране

validate_format_of низ с aêìõü в релси - руби на релси, рубин, кодиране

Аз правя френски глагол conjugation Rails уебсайт, където потребителите могат да въвеждат конюгации на глаголи като:

     se abstenir
m"appelle
êtes
achète

И трябва да validate_format_of тези глаголи. Апострофите са доста лесни, но какво да кажем за героите?

До сега имам:

    word_format = /A[w]+[" ]?[w]*z/
validates_format_of (...), :with => word_format

Което очевидно не работи, тъй като не им съответства. Също така, включването на (...) в regexp ми дава невалидна грешка в много байтове (US-ASCII).

Също така трябва да направя малка част от тези струни,които рубинът игнорира, което води до "VOUS êTES" например. Твърдият отговор изглежда го прави на ръка, но се надявам, че Руби / Райс отново ще ме изненада.

Изглежда, че това е тежък проблем и не чаках от момента на властта на Руби / Райс.

Някой може ли да ми даде представа?

Отговори:

0 за отговор № 1

Трябва да инсталирате UnicodeUtils за размисъл.

#encoding: utf-8
require "unicode_utils/upcase"
puts UnicodeUtils.upcase("êtes Niño")#=> ÊTES NIÑO

Регексът може да изглежда така:

word_format = /A[[:word:]]+[" ]?[[:word:]]*z/

/[[:word:]]/ - Знак в една от следните категории Unicode: Писма, Марк, Номер, Конектор_Пунктове.


0 за отговор № 2

То вместо това изглежда на w трябва да използвате израза POSIX [:alpha].

word_format = /A[:alpha]+[" ]?[w]*z/