这是我的代码,并在下面输出,我想使用它,以便与其说出多少次,不如说输出字母以星号形式出现的次数。
例如,如果“ a”在一个句子中出现四次,则输出将产生:
"a": ****
the_file='C:\Users\Jack\Documents\Ruby\Lab1\lyric.txt'
h = Hash.new
f = File.open(the_file, "r")
f.each_line { |line|
words = line.split(//)
words.each { |w|
if h.has_key?(w)
h[w] = h[w] + 1
else
h[w] = 1
end
}
}
# sort the hash by value, and then print it in this sorted order
h.sort{|a,b| a[1]<=>b[1]}.each { |elem|
puts "\"#{elem[0]}\" : #{elem[1]} occurrences"
}
答案 0 :(得分:2)
您只需编写#{elem[1]} occurences
即可代替#{'*' * elem[1]}
有关更多详细信息,请参见method description。
答案 1 :(得分:2)
我想展示另一种可能的替代方法来实现字数统计。 分开阅读文件,让我们考虑以下字符串:
gcc
$ gcc -E your_program.c
初始化哈希可以让您开始计数而无需检查键是否存在:Hash#default
。String#each_char
Hash#to_a
答案 2 :(得分:0)
puts "\"#{elem[0]}\": " + '*' * elem[1]
+
表示串联,string
*
number
将重复某些字符串number
次。
答案 3 :(得分:0)
使用Ruby中的字符串,您可以对它们使用数学运算符。因此,您知道字母出现了多少次(在elem[1]
中)。在这种情况下,您可以将星号乘以该数量:
"\"#{elem[0]}: #{'*' * elem[1]}\""