2012-11-25 88 views
3

我想写一个程序,当输入单个字母时,如果它是大写字母,则将其保留为大写字母并将其返回,如果是小写字母,则转换为大写字母。我如何编写这个以便能够判断字符串最初是大写还是小写?在ruby中,如何判断字符串输入是大写还是小写?

+0

可能重复[我如何检查一个单词已经在Ruby中全部大写?](http://stackoverflow.com/questions/8529595/how-can-i-check-a-word-is -already-all-uppercase-in-ruby) – philant

回答

8

只需将字符串转换为大写,并将其与原

string == string.upcase 

或小写比较

string == string.downcase 

 

编辑:作为评论的方案中提到以上仅适用于英文字母。如果你需要一个国际解决方案,而不是使用

def upcase?(string) 
    !string[/[[:lower:]]/] 
end 

它使用正则表达式来扫描小写字母串和否定的发现告诉字符串是否全部大写。

+2

['upcase'](http://ruby-doc.org/core-1.9.3/String.html#method-i-upcase)和['downcase'] (http://ruby-doc.org/core-1.9.3/String.html#method-i-downcase)有一个重要的警告:它们只能使用ASCII。 –

+0

真的吗? #upcase和#downcase仅适用于ASCII码?听起来像是一个bug,鉴于Ruby的新“编码”世界观。你有一段代码来证明这一点吗? – trans

2

听起来像你只需要转换成大写,并不需要打扰如果小写检查在所有,因为应用#upcase已经大写的东西不会影响它。

1

对于单个字符串,您可以使用start_with?方法也是如此。

user_input = gets.chomp 

if user_input.start_with?(user_input.downcase) 
    user_input.upcase! 
end 
相关问题