2012-11-25 91 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 
相關問題