ruby - 如何从文本文件中读取字符,然后将它们存储到 Ruby 中的散列中

标签 ruby

我正在做一项作业,但无法弄清楚。我们必须首先解析一个文本文件,然后将结果输入哈希。我这样做了:

    code = File.open(WORKING_DIR + '/code.txt','r')
    char_count = {'a' => 0,'b' => 0,'c' => 0,'d' => 0,'e' => 0,'f' => 0,'g' => 0,'h' => 0,'i' => 0,
                   'j' => 0,'k' => 0,'l' => 0,'m' => 0,'n' => 0,'o' => 0,'p' => 0,'q' => 0,'r' => 0,
                   's' => 0,'t' => 0,'u' => 0,'v' => 0,'w' => 0,'x' => 0,'y' => 0,'z' => 0
                   }
# Step through each line in the file.
code.readlines.each do |line|

    # Print each character of this particular line.
    line.split('').each do
        |ch| 
            char_count.has_key?('ch')
                char_count['ch'] +=1        
           end

我的思路:打开文件到一个名为code的变量 阅读各行 将线条分成每个字符。 我知道这行得通,我可以将角色放到屏幕上。 现在我需要将字符输入到散列中,但它不起作用。我在语法(至少)和基本概念(最多)上苦苦挣扎。我只想要文件中的字母字符,而不是标点符号等。

如有任何帮助,我们将不胜感激。

谢谢。

最佳答案

我会直接做:

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
      ... # some filter on the character you want to reject.
      char_count[c] +=1
   end
end

PS:你写了 'ch' 字符串而不是 ch 变量名

编辑:过滤器可以是

f.each_char do |c| # iterate on each character
   next if c ~= \/W\ # exclude with a regexp non word character
   ....

关于ruby - 如何从文本文件中读取字符,然后将它们存储到 Ruby 中的散列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7649970/

相关文章:

ruby-on-rails - 如何为定义的页面和记录总数选择数据?

ruby-on-rails - 如何将分钟添加到 Time 对象

ruby-on-rails - 如何在 Mac os 10.6 上安装 mysql gem?

ruby - 没有轨道的 ActiveRecord 时区

ruby-on-rails - 这个 gem 如何与您的错误处理 Hook ?

ruby-on-rails - 如何在 Rails 4.0 中仅继承 ActiveRecord 模型的连接

Ruby gem 安装目录错误

ruby-on-rails - 通过...处理 has_many 的 rails 中的关联...但是两个连接表很深

html - Ruby Rails <%= yield %> 没有正确显示 Bootstrap 页脚

ruby - 形式参数不能是全局变量