Sun~sun~Flower's

〜ITエンジニアとして日々前向きに生きていくノウハウブログ〜

MENU

【Railsアプリケーション】任意の文字列から指定文字列を数える方法

f:id:mTakata:20200427224002j:plain

こんにちは。

 

この記事は、プログラミング言語「Ruby」のフレームワーク「Rails」についての記事になります。

 

この記事を読む事で、

・任意の文字列から、指定された文字列を取得する方法

 

・指定した文字列がいくつあるか?数える方法

上記が分かります。

 

それでは、例題を用いて解説していきますね。

問題

任意の文字列で、"hi"がいくつあるか数えてその数を出力するメソッドを作りましょう。

 

※わからない場合は、次のAPIを利用してみてください。
【関連URL】

http:// https://docs.ruby-lang.org/ja/search/

出力例

count_hi('abc hi ho') → 1
count_hi('ABChi hi') → 2
count_hi('hihi') → 2

模範回答

```Rails(Ruby)
1 def count_hi(str)
2 puts str.scan("hi").length
3 end ```

 解説

1. まずは、任意の文字列から指定した文字列(今回は"hi"です)を取得します。

```Rails(Ruby)
2 puts str.scan("hi").length ```

結論として、scan()メソッドを使用します。

 

str.scan("文字列")とすることで、変数strに格納された文字列から、scanの括弧内の文字列を検索し、取得してくれます。

 

例えば、

str = "テスト, 太郎, 次郎, テスト"で、str.scan("テスト")の場合に出力されるのは、

["テスト", "テスト"] ※配列の形で出力

という感じです。 

```Rails(Ruby)
2 puts str.scan("テスト") → ["テスト", "テスト"] が出力される ```

 

2. 次は、指定した文字列がいくつあるか数えます。

結論としては、lengthメソッドを使います。

 

これを使うことで、配列に格納された要素を数えてくれます。

 

str.scan("hi")によって現在、「hi」の文字列が配列の中に格納されている状態なのは分かりますね。

 

具体的には、

str="abc hi ho"→str.scan("hi")→["hi"]

 

str="ABChi hi"→str.scan("hi")→["hi", "hi"]

 

str="hihi"→str.scan("hi")→["hi", "hi"]

こんな感じです。

 

 

そして、str.scan("hi")にlengthメソッドを加えstr.scan("hi").lengthとすることで、配列内の"hi"を数えて数字を出力するという流れです。

 

以上、

・任意の文字列から、指定された文字列を取得する方法

 

・指定した文字列がいくつあるか?数える方法

上記2点を紹介しました。

 

あと、lengthメソッドは僕の経験の限りではよく使います。

 

他の言語でもlengthメソッドは使いますので、覚えておいて損はしないです。

 

引き続き学習頑張ってください。

 

以上となります、参考になれば幸いです。

ありがとうございました。