我想在Ruby中創建一個函數,用來檢查一個字符串是否有兩個或更多的連續大寫字母,例如:檢查兩個或多個連續的字母是否大寫
"Hello There" # => returns false
"Hello ThERe" # => returns true
我想在Ruby中創建一個函數,用來檢查一個字符串是否有兩個或更多的連續大寫字母,例如:檢查兩個或多個連續的字母是否大寫
"Hello There" # => returns false
"Hello ThERe" # => returns true
"Hello There" =~ /[A-Z]{2}/
# => nil
"Hello ThERe" =~ /[A-Z]{2}/
# => 8
這將返回零測試這一點,如果它沒有字母,否則中第一次出現的索引(你可以把這些作爲真/假)
def has_two_uppercase_letters
str =~ /[A-Z]{2}/
end
或者,如果你想返回一個明確的true/false:
def has_two_uppercase_letters
(str =~ /[A-Z]{2}/) != nil
end
因爲... e紅寶石不支持\p{upper}
,你必須使用
/\p{Lu}{2,}/
似乎沒有工作:pik ruby -e「p'MMXII'=〜/ \ p {Lu} {2,} /」ruby 1.8.7(2011-02-18 patchlevel 334)[i386-mingw32] -e:1:警告:正則表達式具有無效間隔 -e:1:警告:正則表達式具有'}」不逃逸 零 紅寶石1.9.2p180(2011-02-18)[I386-的mingw32] - e:1:無效的字符屬性名稱{Lu}:/ \ p {Lu} {2,}/ – bheeshmar 2011-05-12 13:42:41
@bheeshmar:Ruby 1.9如何不支持Unicode常規類別作爲屬性名稱?根據Oniguruma文檔,我相信Ruby(奇怪地)使用而不是PCRE,你應該擁有它們。 – tchrist 2011-05-12 14:17:07
如果匹配指數爲零,是否仍然評估爲TRUE? – ridgerunner 2011-05-03 17:36:32
是的。只有'nil'和'false'被評估爲false。其他一切(包括0)評估爲真。看到我編輯的答案。 – 2011-05-03 17:52:31
'!!〜'更紅寶石。 – sawa 2011-05-03 19:57:01