gpt4 book ai didi

ruby - 如何在 Ruby 中检测字符串中的某些 Unicode 字符?

转载 作者:数据小太阳 更新时间:2023-10-29 06:34:58 26 4
gpt4 key购买 nike

给定一个 Ruby 1.8.7 中的字符串(没有使用\p{} 支持 Unicode 属性的很棒的 Oniguruma 正则表达式引擎),我希望能够确定该字符串是否包含一个或多个中文、日文或韩文字符;即

class String
def contains_cjk?
...
end
end

>> '日本語'.contains_cjk?
=> true
>> '광고 프로그램'.contains_cjk?
=> true
>> '艾弗森将退出篮坛'.contains_cjk?
=> true
>> 'Watashi ha bakana gaijin desu.'.contains_cjk?
=> false

我怀疑这会归结为查看字符串中的任何字符是否在 Unihan CJKV Unicode blocks 中,但我认为值得询问是否有人知道 Ruby 中的现有解决方案。

最佳答案

( ruby 1.9.2)

#encoding: UTF-8
class String
def contains_cjk?
!!(self =~ /\p{Han}|\p{Katakana}|\p{Hiragana}|\p{Hangul}/)
end
end

strings= ['日本', '광고 프로그램', '艾弗森将退出篮坛', 'Watashi ha bakana gaijin desu.']
strings.each{|s| puts s.contains_cjk?}

#true
#true
#true
#false

\p{} 匹配字符的 Unicode 脚本。
支持以下脚本:阿拉伯语、亚美尼亚语、巴厘语、孟加拉语、Bopomofo、盲文、Buginese、Buhid、Canadian_Aboriginal、Carian、Cham、Cherokee、通用语、科普特语、楔形文字、塞浦路斯语、西里尔语、德塞雷特语、梵文、埃塞俄比亚语、格鲁吉亚语、格拉哥里语、哥特语、希腊语、古吉拉特语、Gurmukhi、韩语、韩语、Hanunoo、希伯来语、平假名、继承、卡纳达语、片假名、Kayah_Li、Kharoshthi、高棉语、老挝语、拉丁语、Lepcha、Limbu、Linear_B、Lycian、Lydian、马拉雅拉姆语、蒙古语、缅甸语、 New_Tai_Lue、Nko、Ogham、Ol_Chiki、Old_Italic、Old_Persian、Oriya、Osmanya、Phags_Pa、腓尼基语、Rejang、Runic、Saurashtra、Shavian、僧伽罗语、巽他语、Syloti_Nagri、叙利亚语、他加禄语、Tagbanwa、Tai_Le、泰米尔语、泰卢固语、Thaana、泰语、藏语、提菲纳语、乌加里特语、瓦伊语和彝语。

哇。 Ruby Regexp source .

关于ruby - 如何在 Ruby 中检测字符串中的某些 Unicode 字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4681055/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com