Dada una cadena en Ruby 1.8.7 (sin el asombroso motor de expresión regular Oniguruma que admite las propiedades Unicode con \ p {}), me gustaría poder determinar si la cadena contiene uno o más caracteres chinos, japoneses o coreanos. caracteres; es decir,¿Cómo puedo detectar ciertos caracteres Unicode en una cadena en Ruby?
class String
def contains_cjk?
...
end
end
>> '日本語'.contains_cjk?
=> true
>> '광고 프로그램'.contains_cjk?
=> true
>> '艾弗森将退出篮坛'.contains_cjk?
=> true
>> 'Watashi ha bakana gaijin desu.'.contains_cjk?
=> false
Sospecho que esto se reducen a ver si alguno de los caracteres de la cadena están en la Unihan CJKV Unicode blocks, pero pensé que valía la pena preguntar si alguien sabe de una solución existente en Ruby.
¿Está utilizando la versión 1.9 de Ruby, o simplemente una versión más antigua y sin un buen soporte Unicode expresiones regulares? Si está utilizando 1.9, debe tener acceso a (algunas) propiedades Unicode, como '\ p {InCJKUnifiedIdeographs}' o incluso '\ p {Han}'. – tchrist
1.8.7 sin Oniguruma; actualizado la pregunta. –