Ruby简单数组/迭代器?

时间:2017-01-19 00:29:44

标签: ruby

我有一个用.txt文件写的故事,我必须计算字母和单词的数量然后除以两者以找到平均值。我无法找到总信件数或总字数。当我运行我的程序时,Ruby向我显示了一个数字列表,但我认为这是每个单词的字母数。我正在寻找TOTAL字母,所以我不确定如何让Ruby添加所有内容。这是代码。也是计算单词总数的迭代器" .count" ?

myfile = File.new("story.txt", "r")
contents = myfile.read
wordlist = contents.split
wordlist.each do |length|
puts length.size.to_s
end

2 个答案:

答案 0 :(得分:0)

  

也是计算单词总数的迭代器" .count" ?

没有。 count()是一个String方法,您可以在String docs中阅读。

另一方面,each()是一个迭代器。

您可以获取String docs中描述的字符串的lengthsize

所以,你可以这样做:

words = %w[ a to cat ]  #shortcut for ["a", "to", "cat"]
                        #Saves you from having to type all those quotes.
letter_count = 0
word_count = 0

words.each do |word|
  word_count += 1
  letter_count += word.length
end

puts "The count of words is: #{word_count}"
puts "The total number of letters is: #{letter_count}"

--output:--
The count of words is: 3
The total number of letters is: 6

答案 1 :(得分:0)

DOE,

如果要从.txt文件中获取字母和单词的总数,可以使用Ruby的字符串类中的.split()方法,该方法是myfile.read`的返回值。

要获取story.txt中所有字母的计数,我们可以使用

contents.split("")

我们给split方法.split()'一个空字符串作为参数,告诉Ruby将该字符串拆分成可能的大部分。

contents.split("")会返回如下内容:

=> ["t", "h", "i", "s", " ", "i", "s", " ", "a", "n", " ", "e", "x", "a", "m", "p", "l", "e", " ", "s", "t", "o", "r", "y"]是吗?

所以接下来我们使用.split()方法完成所有操作,返回一个数组,我们可以在其上调用Array类的.length方法。 .length方法返回数组中的元素数。 在这种情况下,我们得到 => 24

对于字数统计,我们会重复上述过程,只有我们告诉红宝石split(" ") " "在引号中有空格。

因此,要获得.txt中的单词计数和字母数,我们可以编写类似

的内容
myfile = File.new("file.txt", "r")
contents = myfile.read
word_list = contents.split(" ")#returns an array of words
word_count = word_list.length# returns number all words in the text file
letter_list = contents.split("")#returns an array of letters
letter_count = letter_list.length#returns number of all letters in the text file