检查字符串是否是Rails中的全大写字母

时间:2010-02-28 05:36:43

标签: ruby-on-rails ruby string

我正在查看字符串是否是Rails中的所有大写字母。 我该怎么做呢?

我正在编写自己的自定义复数辅助方法,我会传递像“WORD”这样的词语,有时会传递“Word” - 我想测试我的单词是否全部为大写所以我可以返回“WORDS” - 如果这个词是复数(与“WORDs”相对),则最后是“S”。

谢谢!

3 个答案:

答案 0 :(得分:23)

这样做:

str == str.upcase

E.g:

str = "DOG"
str == str.upcase  # true
str = "cat"
str == str.upcase  # false

因此,您的方案的代码将是:

# In the code below `upcase` is required after `str.pluralize` to transform 
# DOGs to DOGS
str = str.pluralize.upcase if str == str.upcase

答案 1 :(得分:2)

或者这个:

str =~ /^[A-Z]+$/

e.g:

"DOG" =~ /^[A-Z]+$/    # 0
"cat" =~ /^[A-Z]+$/    # nil 

答案 2 :(得分:2)

感谢正则表达式,它非常简单。只需使用允许所有大写字母的[[:upper:]]字符类,包括但不限于ASCII-8中的字母。

具体取决于您的需求:

# allows upper case characters only
/\A[[:upper:]]*\Z/   =~ "YOURSTRING"

# additionally disallows empty strings
/\A[[:upper:]]+\Z/   =~ "YOURSTRING"

# also allows white spaces (multi-word strings)
/\A[[:upper:]\s]*\Z/ =~ "YOUR STRING"

# allows everything but lower case letters
/\A[^[:lower:]]*\Z/  =~ "YOUR 123_STRING!"

Ruby doc:http://www.ruby-doc.org/core-2.1.4/Regexp.html