2010-04-28 8 views
8

हैकैसे निर्धारित करें कि एक चरित्र है, तो एक चरित्र एक चीनी चरित्र गहरे लाल रंग का उपयोग कर रहा है निर्धारित करने के लिए कैसे एक चीनी चरित्र

+0

वे आम तौर पर काताकाना या हिरागाना की तुलना में अधिक स्ट्रोक की है। और आप आमतौर पर केवल अधिक जटिल कांजी पर रूबी का उपयोग करना चाहते हैं ... एक पल प्रतीक्षा करें, क्या यह जापानी है। एसई या ढेर ओवरफ्लो? –

उत्तर

5

रूबी में एन्कोडिंग पर एक दिलचस्प लेख: http://blog.grayproductions.net/articles/bytes_and_characters_in_ruby_18 (यह एक श्रृंखला का हिस्सा - लेख की शुरुआत में सामग्री की तालिका भी देखें)

मैंने पहले चीनी वर्णों का उपयोग नहीं किया है, लेकिन यह यूनिकोड द्वारा समर्थित सूची प्रतीत होता है: http://en.wikipedia.org/wiki/List_of_CJK_Unified_Ideographs। यह भी ध्यान रखें कि यह एक एकीकृत प्रणाली है जिसमें जापानी और कोरियाई पात्र शामिल हैं (कुछ वर्ण उनके बीच साझा किए जाते हैं) - सुनिश्चित नहीं है कि आप केवल चीनी हैं जो अंतर कर सकते हैं।

मुझे लगता है कि आप देख सकते हैं कि यह सूचकांक n के साथ स्ट्रिंग str और चरित्र पर इस फोन करके एक CJK चरित्र है:

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

आपको बहुत धन्यवाद – HelloWorld

+0

क्या ये चीनी अक्षरों के लिए वास्तविक यूनिकोड श्रेणियां हैं? – s84

+0

@ एसएएम वे सीजेके श्रेणियां हैं। ये चीनी, जापानी और कोरियाई पात्र हैं (मानते हैं कि श्रेणियां सही हैं, जो मुझे विश्वास है कि वे हैं) –

12

रूबी 1,9

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

मैं इस कोड का उपयोग करता हूं, लेकिन यह काम नहीं कर सकता है। यह त्रुटि जानकारी है: अवैध वर्ण संपत्ति का नाम {हान}:/\ p {हान}/ – HelloWorld

+1

@HelloWorld: रूबी का अपना संस्करण अपडेट करें। सभी पात्र वर्गों को अब दस्तावेज किया गया है: http://github.com/ruby/ruby/blob/trunk/doc/re.rdoc (ठंडा निक, बीटीडब्ल्यू) –

+0

उपरोक्त लिंक टूटा हुआ है, लेकिन आप रूबी में सभी जानकारी पा सकते हैं regexp के लिए दस्तावेज़: http://www.ruby-doc.org/core-2.0.0/Regexp.html#label-Character+Properties – deRailed