Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何找出散列中是否存在密钥,然后使用该信息_Ruby - Fatal编程技术网

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字符。