枚举一个字符';Ruby中的Unicode属性?
有没有办法在Ruby中枚举字符的所有Unicode属性?我可以使用Ruby 1.9的Regexp类来测试给定字符是否具有特定属性(例如,枚举一个字符';Ruby中的Unicode属性?,ruby,unicode,character-properties,Ruby,Unicode,Character Properties,有没有办法在Ruby中枚举字符的所有Unicode属性?我可以使用Ruby 1.9的Regexp类来测试给定字符是否具有特定属性(例如,some\u char=~/\p{p}/来测试some\u char是否是标点符号,等等)。。。但是,由于字符可以有多个属性((,例如,既是标点符号又是ASCII码,等等),所以只要能够获得一个字符所有属性的列表就好了 我可能可以用unicode_data.txt,或者其他任何名称手动完成,但这似乎是某种可能已经在某处完成的事情。UnicodeUtils似乎没有
some\u char=~/\p{p}/
来测试some\u char
是否是标点符号,等等)。。。但是,由于字符可以有多个属性((
,例如,既是标点符号又是ASCII码,等等),所以只要能够获得一个字符所有属性的列表就好了
我可能可以用unicode_data.txt
,或者其他任何名称手动完成,但这似乎是某种可能已经在某处完成的事情。UnicodeUtils
似乎没有类似的内容,谷歌搜索也没有发现任何明显的问题。谢谢!有一个,但将自己描述为“非常早期的草稿”你可以向我的
你可能还想得到,这样你就可以走另一条路了。下面是一些叫做它的例子:
$ unichars -gns '\p{Cased}' '\p{Number}'
$ unichars '\R'
$ unichars '\S' '[\v\h]'
$ unichars '\S' '\p{space}'
$ unichars '\pL' '\p{Greek}'
$ unichars '\pL' '\p{Greek}' | um
$ unichars '\p{Age=6.0}' | um
$ unichars '\p{Lowercase}' '\P{Lowercase_Letter}'
$ unichars '\p{Lower}' '\P{Ll}' # same but easier to type
$ unichars -a '\p{alphabetic}' '\P{Letter}' | wc -l # 1006 code points
$ unichars -gas '\PL' '\p{Cased}'
$ unichars -gas '\P{MARK}' '\p{diacritic}' # 209 code points
$ unichars -gas '\pM' '\P{BC=NSM}'
$ unichars -gas '\p{Cased}' '[^\p{CWL}\p{CWT}\p{CWU}]'
$ unichars -gas '\p{Dash}'
$ unichars -gas '\p{mark}' '\P{DIACRITIC}' # 1068 code points
$ unichars -gas 'grep { length > 1 } lc, ucfirst, uc'
$ unichars -gas 'uc ne ucfirst'
$ unichars -gasn NUM
以下是输出的一个示例:
$ unichars -gsn NUM 'int NUM ne NUM'
0 U+0030 GC=Nd 0=NV SC=Common DIGIT ZERO
¼ U+00BC GC=No 1/4=NV SC=Common VULGAR FRACTION ONE QUARTER
½ U+00BD GC=No 1/2=NV SC=Common VULGAR FRACTION ONE HALF
¾ U+00BE GC=No 3/4=NV SC=Common VULGAR FRACTION THREE QUARTERS
٠ U+0660 GC=Nd 0=NV SC=Common ARABIC-INDIC DIGIT ZERO
۰ U+06F0 GC=Nd 0=NV SC=Arabic EXTENDED ARABIC-INDIC DIGIT ZERO
߀ U+07C0 GC=Nd 0=NV SC=Nko NKO DIGIT ZERO
० U+0966 GC=Nd 0=NV SC=Devanagari DEVANAGARI DIGIT ZERO
০ U+09E6 GC=Nd 0=NV SC=Bengali BENGALI DIGIT ZERO
৴ U+09F4 GC=No 1/16=NV SC=Bengali BENGALI CURRENCY NUMERATOR ONE
৵ U+09F5 GC=No 1/8=NV SC=Bengali BENGALI CURRENCY NUMERATOR TWO
৶ U+09F6 GC=No 3/16=NV SC=Bengali BENGALI CURRENCY NUMERATOR THREE
৷ U+09F7 GC=No 1/4=NV SC=Bengali BENGALI CURRENCY NUMERATOR FOUR
৸ U+09F8 GC=No 3/4=NV SC=Bengali BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR
੦ U+0A66 GC=Nd 0=NV SC=Gurmukhi GURMUKHI DIGIT ZERO
૦ U+0AE6 GC=Nd 0=NV SC=Gujarati GUJARATI DIGIT ZERO
୦ U+0B66 GC=Nd 0=NV SC=Oriya ORIYA DIGIT ZERO
୲ U+0B72 GC=No 1/4=NV SC=Oriya ORIYA FRACTION ONE QUARTER
୳ U+0B73 GC=No 1/2=NV SC=Oriya ORIYA FRACTION ONE HALF
୴ U+0B74 GC=No 3/4=NV SC=Oriya ORIYA FRACTION THREE QUARTERS
୵ U+0B75 GC=No 1/16=NV SC=Oriya ORIYA FRACTION ONE SIXTEENTH
୶ U+0B76 GC=No 1/8=NV SC=Oriya ORIYA FRACTION ONE EIGHTH
୷ U+0B77 GC=No 3/16=NV SC=Oriya ORIYA FRACTION THREE SIXTEENTHS
等等
我在我的第一篇文章中描述了这些工具。这些工具只是一套几十个工具中的两个。是的,我遇到过……也许我是瞎子,但我不知道如何使用它来做我想做的事情,从源代码看,我不确定它是否真的可以。不过,谢谢!哇,这是一个非常有用的工具谢谢你的链接。
$ unichars -gsn NUM 'int NUM ne NUM'
0 U+0030 GC=Nd 0=NV SC=Common DIGIT ZERO
¼ U+00BC GC=No 1/4=NV SC=Common VULGAR FRACTION ONE QUARTER
½ U+00BD GC=No 1/2=NV SC=Common VULGAR FRACTION ONE HALF
¾ U+00BE GC=No 3/4=NV SC=Common VULGAR FRACTION THREE QUARTERS
٠ U+0660 GC=Nd 0=NV SC=Common ARABIC-INDIC DIGIT ZERO
۰ U+06F0 GC=Nd 0=NV SC=Arabic EXTENDED ARABIC-INDIC DIGIT ZERO
߀ U+07C0 GC=Nd 0=NV SC=Nko NKO DIGIT ZERO
० U+0966 GC=Nd 0=NV SC=Devanagari DEVANAGARI DIGIT ZERO
০ U+09E6 GC=Nd 0=NV SC=Bengali BENGALI DIGIT ZERO
৴ U+09F4 GC=No 1/16=NV SC=Bengali BENGALI CURRENCY NUMERATOR ONE
৵ U+09F5 GC=No 1/8=NV SC=Bengali BENGALI CURRENCY NUMERATOR TWO
৶ U+09F6 GC=No 3/16=NV SC=Bengali BENGALI CURRENCY NUMERATOR THREE
৷ U+09F7 GC=No 1/4=NV SC=Bengali BENGALI CURRENCY NUMERATOR FOUR
৸ U+09F8 GC=No 3/4=NV SC=Bengali BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR
੦ U+0A66 GC=Nd 0=NV SC=Gurmukhi GURMUKHI DIGIT ZERO
૦ U+0AE6 GC=Nd 0=NV SC=Gujarati GUJARATI DIGIT ZERO
୦ U+0B66 GC=Nd 0=NV SC=Oriya ORIYA DIGIT ZERO
୲ U+0B72 GC=No 1/4=NV SC=Oriya ORIYA FRACTION ONE QUARTER
୳ U+0B73 GC=No 1/2=NV SC=Oriya ORIYA FRACTION ONE HALF
୴ U+0B74 GC=No 3/4=NV SC=Oriya ORIYA FRACTION THREE QUARTERS
୵ U+0B75 GC=No 1/16=NV SC=Oriya ORIYA FRACTION ONE SIXTEENTH
୶ U+0B76 GC=No 1/8=NV SC=Oriya ORIYA FRACTION ONE EIGHTH
୷ U+0B77 GC=No 3/16=NV SC=Oriya ORIYA FRACTION THREE SIXTEENTHS