0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Ruby】文字数を算出するプログラム count_hiメソッド

Posted at

※初心者向け
※アウトプット練習の為
※学習の復習

開発環境
rails 6.0.4.4
ruby 2.6.5

##概要
対象となる文字列から特定の文字列の数を算出し、その数を出力するプログラムを実装

##問題内容
以下の要件を満たすcount_hiメソッドを実装しましょう。

・対象となる文字列の中から、"hi"という特定の文字列の数を取得すること
・上記で取得した数を出力すること

雛形

def count_hi(str)
  #  処理を記述
end

# 呼び出し例(引数には対象となる文字列を指定します)
count_hi('abc hi ho')

出力例:
count_hi('abc hi ho') → 1
count_hi('ABChi hi') → 2
count_hi('hihi') → 2

ヒント
scanメソッドを使用しましょう。

scanメソッド
scanメソッドは、対象の要素から引数で指定した文字列を数え、配列として返すメソッドです。

"foobarbazfoobarbaz".scan("ba")
=> ["ba", "ba", "ba", "ba"]

##解答

def count_hi(str)
  puts str.scan("hi").length
end

# 呼び出し例(引数には対象となる文字列を指定します)
count_hi('abc hi ho')

##解説
対象の文字列の中に"hi"という文字列がいくつあるか数える為、scanメソッドを使用します。scanメソッドは、「ヒント」で確認したとおり検索結果を配列として返します。

"foobarbazfoobarbaz".scan("ba")
=> ["ba", "ba", "ba", "ba"]

上記を踏まえて、今回の問題でのscanメソッドの役割を確認します。
1行目のcount_hiメソッドの仮引数strには対象の文字列が格納されているため、以下のように記述することで、”hi”という文字列の数だけ配列の要素を返すことができます。

def count_hi(str)
  str.scan("hi")
end

そして、その配列の中の要素の数をlengthメソッドで返し、putsメソッドで出力すれば完成です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?