2010-04-28 39 views
8

Cómo determinar si un carácter es un carácter chino usando rubícómo determinar si un carácter es un carácter chino

+0

lo general, tienen más accidentes cerebrovasculares que katakana o hiragana. Y en general, se supone que debes usar ruby ​​solo en los kanji más complejos ... espera un momento, ¿es este Japanese.SE o stack overflow? –

Respuesta

5

un interesante artículo sobre codificaciones en Ruby: http://blog.grayproductions.net/articles/bytes_and_characters_in_ruby_18 (que es parte de una serie - consulte la tabla de contenido al principio del artículo también)

No he usado caracteres chinos anteriormente, pero esta parece ser la lista soportada por unicode: http://en.wikipedia.org/wiki/List_of_CJK_Unified_Ideographs. También tenga en cuenta que se trata de un sistema unificado que incluye caracteres japoneses y coreanos (algunos caracteres se comparten entre ellos). No estoy seguro si puede distinguir cuáles son solo chinos.

creo que se puede comprobar si se trata de un personaje CJK llamando a esto en la cadena str y el carácter con el índice n:

def check_char(str, n) 
    list_of_chars = str.unpack("U*") 
    char = list_of_chars[n] 
    #main blocks 
    if char >= 0x4E00 && char <= 0x9FFF 
    return true 
    end 
    #extended block A 
    if char >= 0x3400 && char <= 0x4DBF 
    return true 
    end 
    #extended block B 
    if char >= 0x20000 && char <= 0x2A6DF 
    return true 
    end 
    #extended block C 
    if char >= 0x2A700 && char <= 0x2B73F 
    return true 
    end 
    return false 
end 
+0

muchas gracias – HelloWorld

+0

¿son estos los rangos de Unicode reales para caracteres chinos? – s84

+0

@sam son los rangos CJK. Estos son los caracteres chinos, japoneses y coreanos (asumiendo que los rangos son correctos, lo que creo que son) –

12

Rubí 1,9

#encoding: utf-8 
"漢" =~ /\p{Han}/ 
+0

Uso este código, pero no puede funcionar Esto es información de error: nombre de propiedad de carácter no válido {Han}:/\ p {Han}/ – HelloWorld

+1

@HelloWorld: Actualice su versión de Ruby. Todas las clases de caracteres están documentadas ahora: http://github.com/ruby/ruby/blob/trunk/doc/re.rdoc (genial nick, BTW) –

+0

El enlace de arriba está roto, pero puedes encontrar toda la información en el rubí docs for regexp: http://www.ruby-doc.org/core-2.0.0/Regexp.html#label-Character+Properties – deRailed

Cuestiones relacionadas