Проверьте, является ли строка прописными в Rails - PullRequest
9 голосов
/ 28 февраля 2010

Я смотрю, чтобы проверить, все ли строки в Rails. Как бы я поступил так?

Я пишу свой собственный вспомогательный метод множественного числа, и я бы что-то передавал такие слова, как «СЛОВО», а иногда и «Слово» - я хочу проверить, все ли мои слова заглавные, поэтому я могу вернуть «СЛОВА» заглавная буква «S» в конце, если слово во множественном числе (вместо «WORD»).

Спасибо!

Ответы [ 3 ]

23 голосов
/ 28 февраля 2010

Сделайте это:

str == str.upcase

например:

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
2 голосов
/ 20 ноября 2014

Благодаря регулярным выражениям это очень просто. Просто используйте [[: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

2 голосов
/ 28 февраля 2010

Или это:

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

например:.

"DOG" =~ /^[A-Z]+$/    # 0
"cat" =~ /^[A-Z]+$/    # nil 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...