ruby - 通过使用默认值初始化哈希键,是否有任何不同的方法来编写下面的代码?
问题描述
编写一个方法,返回字符串中使用的各种小写、大写、数字和特殊字符的编号。利用范围。
输入=“heLLo Every1”
我正在提供的解决方案中使用范围和案例方法。
解决方案:
class String
def character_count
uppercase_count = 0
lowercase_count = 0
digit_count = 0
uppercase_range = Range.new('A', 'Z')
lowercase_range = Range.new('a', 'z')
digit_range = Range.new('0', '9')
special_character_count = 0
each_char do |item|
case item
when uppercase_range
uppercase_count += 1
when lowercase_range
lowercase_count += 1
when digit_range
digit_count += 1
else
special_character_count += 1
end
end
[lowercase_count, uppercase_count, digit_count, special_character_count]
end
end
if ARGV.empty?
puts 'Please provide an input'
else
string = ARGV[0]
count_array = string.character_count
puts "Lowercase characters = #{count_array[0]}"
puts "Uppercase characters = #{count_array[1]}"
puts "Numeric characters = #{count_array[2]}"
puts "Special characters = #{count_array[3]}"
end
代码正在运行。
解决方案
是的
class String
def character_count
counters = Hash.new(0)
each_char do |item|
case item
when 'A'..'Z'
counters[:uppercase] += 1
when 'a'..'z'
counters[:lowercase] += 1
when '0'..'9'
counters[:digit] += 1
else
counters[:special] += 1
end
end
counters.values_at(:uppercase, :lowercase, :digit, :special)
end
end
if ARGV.empty?
puts 'Please provide an input'
else
string = ARGV[0]
uppercase, lowercase, digit, special = string.character_count
puts "Lowercase characters = #{lowercase}"
puts "Uppercase characters = #{uppercase}"
puts "Numeric characters = #{digit}"
puts "Special characters = #{special}"
end
推荐阅读
- java - 如何从网络选项卡中的 DOM 结构中获取承载令牌 - 使用 Selenium?
- phalcon - Phalcon - 如何组织 RESTFul 应用程序
- firebase - 无法将哈希映射值作为 ArrayList
- javascript - 无法通过 webdriverI-O 启动浏览器
- mysql - 检查密码是否正确,在数据库中对 md5 进行哈希处理
- javascript - 如何避免在 javascript 中使用 Media Recorder 录制滞后
- c++ - 结构成员的长列表
- jquery - 如何使用名称属性添加输入值?
- python - Pyinstaller 可执行文件仅适用于激活的虚拟环境
- c++ - Visual Studio 2019 C++ 项目中的特殊字符并使用它们执行 CMD 命令