def which_case(letter)
case letter
when /[[:upper:]]/
:uppercase
when /[[:lower:]]/
:lowercase
else
:other
end
end
which_case('a') #=> :lowercase
which_case('ä') #=> :lowercase
which_case('A') #=> :uppercase
which_case('Ä') #=> :uppercase
which_case('1') #=> :other
或者使用简单的if语句:
puts 'lowercase' if /[[:lower:]]/ =~ 'a'
#=> lowercase
# false
c = 'c'
p c=~/[A-Z]/
p c==c.upcase
p /[A-Z]/===c
p (?A..?Z)===c
p ?A<=c&&c<=?Z
p (?A..?Z).cover?c
p c=~/[[:upper:]]/
p /[[:upper:]]/===c
# true
C = 'C'
p C=~/[A-Z]/
p C==C.upcase
p /[A-Z]/===C
p (?A..?Z)===C
p ?A<=C&&C<=?Z
p (?A..?Z).cover?C
p C=~/[[:upper:]]/
p /[[:upper:]]/===C
7条答案
按热度按时间az31mfrm1#
可以使用POSIX字符类:
/[[:lower:]]/
-小写字母字符/[[:upper:]]/
-大写字母示例:
或者使用简单的
if
语句:vaqhlq812#
使用
===
bzzcjhmw3#
也缺乏对元音变音,diacritcs等的支持,需要
ActiveSupport
,但我喜欢语法:ykejflvf4#
wswtfjt75#
编辑:
.cover?
是Python 1.9中的一个新函数,它只通过检查端点来检查value是否在范围内。这样计算机就不需要将其转换为数组并存储在内存中,从而提高了速度。基本上是
x >= 'A' && x <= 'Z'
的另一种写法um6iljoc6#
x〉= 'A' && x〈= 'Z'
ma8fv8wu7#
有几种方法可以检查字符是否为大写
=~
会传回nil
或0
。三个月。
P.S.不是所有的工作方式都一样
/[[:upper:]]/==='Ñ'
=〉true
/[A-ZÑ]/==='Ñ'
=〉true