2010-04-28 10 views

Antwort

5

einen interessanten Artikel über Codierungen in Ruby: http://blog.grayproductions.net/articles/bytes_and_characters_in_ruby_18 (es ist Teil einer Reihe - überprüfen Sie das Inhaltsverzeichnis am Anfang des Artikels auch)

Ich habe chinesische Schriftzeichen vorher nicht benutzt, aber das scheint die Liste zu sein, die von Unicode unterstützt wird: http://en.wikipedia.org/wiki/List_of_CJK_Unified_Ideographs. Beachten Sie auch, dass es sich um ein einheitliches System mit japanischen und koreanischen Zeichen handelt (einige Zeichen werden zwischen ihnen geteilt) - nicht sicher, ob Sie unterscheiden können, welche nur Chinesisch sind.

Ich glaube, Sie können prüfen, ob es durch den Aufruf dieser auf String str und Zeichen mit dem Index n ein CJK Zeichen ist:

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

vielen dank – HelloWorld

+0

sind das die tatsächlichen Unicode-Bereiche für chinesische Schriftzeichen? – s84

+0

@sam sind sie die CJK-Bereiche. Dies sind die chinesischen, japanischen und koreanischen Zeichen (vorausgesetzt, die Bereiche sind korrekt, was ich glaube, sie sind) –

12

Rubin 1,9

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

Ich benutze diesen Code, aber es kann nicht funktionieren Dies ist Fehlerinfo: Name der ungültigen Zeicheneigenschaft {Han}:/\ p {Han}/ – HelloWorld

+1

@HelloWorld: Aktualisieren Sie Ihre Version von Ruby. Alle Charaktere Klassen sind jetzt dokumentiert: http://github.com/ruby/ruby/blob/trunk/doc/re.rdoc (cooler Nick, BTW) –

+0

Der obige Link ist kaputt, aber Sie können alle Informationen im Rubin finden docs for regexp: http://www.ruby-doc.org/core-2.0.0/Regexp.html#label-Character+Properties – deRailed