问题
I am trying to write a program that when a single letter is inputted, if it's in uppercase, leave it in uppercase and return it, and if it's in lowercase, then convert to uppercase. How do I write this to be able to tell if the string is originally in uppercase or lowercase?
回答1:
Just convert the string to upper case and compare it with the original
string == string.upcase
or for lowercase
string == string.downcase
Edit: as mentioned in the comments the solution above works with English letters only. If you need an international solution instead use
def upcase?(string)
!string[/[[:lower:]]/]
end
which uses a regular expressions to scan the string for lowercase letters and the negates the finding to tell whether the string is all uppercase.
回答2:
Sounds like you just need to convert to uppercase and don't need to bother with the if lowercase check at all, since applying #upcase to something that is already uppercase won't effect it.
回答3:
For a single string you can use start_with? method as well.
user_input = gets.chomp
if user_input.start_with?(user_input.downcase)
user_input.upcase!
end
来源:https://stackoverflow.com/questions/13547694/in-ruby-how-do-you-tell-if-a-string-input-is-in-uppercase-or-lowercase