2017-01-19 6 views
0

私は物語が.txtファイルで書かれているので、平均を見つけるために文字と単語の数を数えなければなりません。私は文字の総数または単語の総数を見つけることができません。私のプログラムを実行すると、Rubyは数字のリストを表示しますが、それは単語ごとの文字の数だと思います。私は合計文字を探しているので、Rubyにすべてを追加する方法がわからない。ここにコードがあります。また、 "count"という単語の総数を数えるイテレータもありますか?Rubyの単純な配列/イテレータ?

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

が重複する可能性のようなものを書くことができます.com/questions/35331077 /ルビーの単語の平均長さを計算して) –

答えて

0

また ".count" の単語の合計数をカウントするイテレータはありますか?

32は、String docsで読むことができるStringメソッドです。

一方、each()はイテレータです。

lengthまたはsize(文字列はString docsに記載されています)を入手できます。あなたは.txtファイルから文字や単語の合計数を取得したい場合は、単に.split()メソッドを使用することができます

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 
+0

コード実行中にエラーが発生します。 –

0

ドウ、

だから、あなたはこのような何かを行うことができますmyfile.read`の戻り値であるRubyの文字列クラスから取得します。

story.txtのすべての文字の数を取得するには、我々は

contents.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メソッドは、配列内の要素の数を返します。我々は唯一の私たちは" "引用のスペースでsplit(" ")にルビーを伝える上で、我々はこのプロセスを繰り返したい単語数について => 24

を取得する。この場合 。 // stackoverflowの:

だから、.TXTでワードカウントおよび文字カウントを取得するために、我々は、[カウントとルビーの単語の平均長さを計算](HTTPの

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 
+0

このコードは機能しました!この作業を "for"ループで行うことは可能ですか? –

+0

もちろん、Rubyの.each()メソッドをお勧めします。これは基本的にforループですが、Rubyが提供しなければならないすべての構文的な砂糖を使っています。例は次のようなものです:word_list.each {| word | word_count + = word.length} –

関連する問題