こんにちは。
この記事は、プログラミング言語「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メソッドは使いますので、覚えておいて損はしないです。
引き続き学習頑張ってください。
以上となります、参考になれば幸いです。
ありがとうございました。