質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

3回答

2301閲覧

Ruby ファイルを読み込んで文字数を数える

Matsui

総合スコア17

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

1グッド

1クリップ

投稿2019/04/14 04:36

Rubyでファイルを読み込んで文字数をカウントしたいのです。ファイルの中身は表示されるのですが、文字数が0から増えません。```Ruby
コード

file

1file.each_line do |line| 2 puts(line) 3end 4print("A[", file.count("A"), "]回、") 5print("B[", file.count("B"), "]回、") 6print("C[", file.count("C"), "]回、") 7print("D[", file.count("D"), "]回、") 8print("E[", file.count("E"), "]回") 9file.close 10 11読み込み元のファイル 12EADBACABEEAAC 13AEEEADBAACCAB 14CAEAEADBAEBAC 15 16どこを改善すればカウントされますか。ご回答お願い致します。
DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

2点誤解があります。

一言で言ってしまうと、file.countは現在位置からの指定された文字列のの数を数える。
ということになります。


どう修正するか

file.each_lineの後にfile.rewindを置いて先頭に戻らせる。

file.countの代わりにfile.each_char.countを用い、後にfile.rewindを行う。


何度も呼んでは先頭に戻るを繰り返すのも面倒くさいので

ruby

1counts = file.each_char.group_by(&:itself).transform_values(&:size) 2print "ABCDE".chars.map{|c| "#{c}[#{counts[c]}]回"}.join('、')

ですかね。

投稿2019/04/14 05:22

asm

総合スコア15147

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Matsui

2019/04/17 11:48

詳しいご説明ありがとうございます。誤解をしているところが分かりました!
guest

0

ベストアンサー

ruby

1txt = File.read("try2.txt") 2puts txt 3print("A[", txt.count("A"), "]回、") 4print("B[", txt.count("B"), "]回、") 5print("C[", txt.count("C"), "]回、") 6print("D[", txt.count("D"), "]回、") 7print("E[", txt.count("E"), "]回")

投稿2019/04/14 05:19

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Matsui

2019/04/17 11:49

回答していただいてありがとうございます!
guest

0

こんな感じでしょうか?

file = File.open("try2.txt", "r") text = "" file.each_line do |line| text = line end print "A[", text.count("A"), "]回、" print "B[", text.count("B"), "]回、" print "C[", text.count("C"), "]回、" print "D[", text.count("D"), "]回、" print "E[", text.count("E"), "]回" file.close

投稿2019/04/14 05:13

mochizuki-pg

総合スコア192

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Matsui

2019/04/17 11:50

回答ありがとうございます! 助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問