我有一个用.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
答案 0 :(得分:0)
也是计算单词总数的迭代器" .count" ?
没有。 count()
是一个String方法,您可以在String docs中阅读。
另一方面,each()是一个迭代器。
您可以获取String docs中描述的字符串的length
或size
。
所以,你可以这样做:
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