Ruby 如何找出散列中是否存在密钥,然后使用该信息
我已经把一个文本文件的行读成了一堆字符。现在我需要让它只显示字母顺序的字符,而不是特殊的字符和标点符号。我试过这个:Ruby 如何找出散列中是否存在密钥,然后使用该信息,ruby,Ruby,我已经把一个文本文件的行读成了一堆字符。现在我需要让它只显示字母顺序的字符,而不是特殊的字符和标点符号。我试过这个: File.open(WORKING_DIR + '/code.txt','r') do |f| char_count = Hash.new(0) # create a hash where 0 is the default value f.each_char do |c| # iterate on each character char_
File.open(WORKING_DIR + '/code.txt','r') do |f|
char_count = Hash.new(0) # create a hash where 0 is the default value
f.each_char do |c| # iterate on each character
char_count.has_key?(c)
char_count[c] +=1
end
end
puts char_count.inspect
但当我检查我的散列时,所有标点符号仍然存在。我怎么会不正确地使用has_key?您似乎确实遗漏了一些东西。既然您已经将此标记为家庭作业,我不会给您一个彻底的解决方案,但这里有一些事情需要研究: 首先,遍历每个字符,而不仅仅是字母数字:
irb(main):001:0> "xyz.abc".each_char { |c| print c, ' ' }
x y z . a b c => "xyz.abc"
所以,你需要做一些测试
第二,在迭代器中,您并没有实际应用
has_key?
测试——您需要在这里使用一些逻辑来决定何时增加哈希值。@wienerdog先生我很困惑,这个答案怎么可以在没有任何注释的情况下被接受。我认为这是一个有用的答案,但是没有人能看出它是如何有用的。你确定只想将alpha字符收集到一个散列中吗?检查您的需求-也许您应该从字符串中删除非alpha字符。