def letter_case_count(string)
char = new Hash
char[:lower] = 0
char[:upper] = 0
char[:neither] = 0
string.split("").each do |x|
if ('A'..'Z').include?(x)
char[:upper]++
elsif ('a'..'z').include?(x)
char[:lower]++
else
char[:neither]++
end
end
end
puts letter_case_count('abCdef 123') == { lowercase: 5, uppercase: 1, neither: 4 }
puts letter_case_count('AbCd +Ef') == { lowercase: 3, uppercase: 3, neither: 2 }
puts letter_case_count('123') == { lowercase: 0, uppercase: 0, neither: 3 }
puts letter_case_count('') == { lowercase: 0, uppercase: 0, neither: 0 }
我收到此错误。我收到“elsif”的意外关键字错误
(repl):9: syntax error, unexpected keyword_elsif
elsif ('a'..'z').include?(x)
^
(repl):11: syntax error, unexpected keyword_else
(repl):13: syntax error, unexpected keyword_end
(repl):20: syntax error, unexpected end-of-input, expecting keyword_end
...: 0, uppercase: 0, neither: 0 }
...
^
有一堆意外的关键字和意外的输入结束。不知道为什么,我几乎没有用Ruby进行编程,我也看不出问题所在。
“短”不一定是“好”。您为每次计数扫描一次字符串。 – Stefan
是不是比生成两个范围'('A'..'Z')'和'('a'..'z')'更好,然后检查是否包含?并且对于每个字符串。 –
你也可以这样使用'count':'str.count(“az”)''''str.count(“AZ”)'''str.count(“1-9”)等。 –