我正在查看一个字符串是否全部是Rails中的大写字母。 我该怎么做呢?检查一个字符串是否是Rails中的全部大写字段
我正在写我自己的自定义复数帮助器方法,我会传递像“WORD”这样的词,有时候是“Word” - 我想测试我的单词是否全部大写,所以我可以返回“WORDS” - 与如果单词是复数,则最后是首字母“S”(对比“WORDs”)。
谢谢!
我正在查看一个字符串是否全部是Rails中的大写字母。 我该怎么做呢?检查一个字符串是否是Rails中的全部大写字段
我正在写我自己的自定义复数帮助器方法,我会传递像“WORD”这样的词,有时候是“Word” - 我想测试我的单词是否全部大写,所以我可以返回“WORDS” - 与如果单词是复数,则最后是首字母“S”(对比“WORDs”)。
谢谢!
这样做:
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
谢谢!那工作:) – 2010-02-28 21:46:05
它是如此美丽的习惯!请记住,对于非常长的字符串,它会招致时间和内存的处罚,因为它需要分配另一个字符串并且两次遍历原始字符串。基于正则表达式的解决方案更为优化。 – skalee 2014-11-19 21:33:11
或者这样:
str =~ /^[A-Z]+$/
例如:
"DOG" =~ /^[A-Z]+$/ # 0
"cat" =~ /^[A-Z]+$/ # nil
当字符串中有A-Z以外的东西时不起作用。例如DÖG或CÄT或DOG123。 – Priit 2010-03-01 07:17:03
确实如此。如果国际化是个问题,'str == str.upcase'可能会更好,但这取决于'upcase'的定义。在我的系统上,''cooperation“.upcase'是''COOPERERATION'',这并没有什么帮助。 Ruby 1.9更具编码意识;对于那些在1.8版本中,有Unicode的宝石:http://rubygems.org/gems/unicode – 2010-03-01 13:07:17
不正确的锚,除了上述问题,它会匹配字符串像“”\ nUPPER“' – skalee 2014-11-19 21:26:57
由于正则表达式,它非常简单。只需使用[[: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中全部大写?(HTTP的可能重复://计算器.com/questions/8529595/how-can-i-check-a-word-is-already-all-uppercase-in-ruby) – philant 2015-05-29 09:15:07
啊不,这个问题之前被问过,所以如果有什么问题应该作为这一个的副本关闭。 – 2015-06-01 07:03:05
@philant - 您不应该投票以双方重复的形式结束......只是从一边进行投票。 – 2015-06-01 07:03:47