kitak blog

Kみたいなエンジニアになりたいブログ

文字列検索をするメソッドを書いてみた

String#indexがあるので車輪の再発明ですが, Enumerableのメソッド, Enumeratorオブジェクトを理解するために単純に文字列検索をするメソッドをかいてみました.

# coding: utf-8

def simple_search(text, pattern)
  text.chars.each_cons(pattern.size).each do |chars|
    return true if chars.join == pattern
  end

  return false
end

if $0 == __FILE__
  text = "Team Swift"
  pattern = "if"
  puts simple_search(text, pattern) # true
end

少し書き方が冗長かもしれないですね. Enumerableには関数型言語でお馴染みのmapやinject, selectなどが定義されています. これらを組合わせるとどうしても横に長いコードになってしまうので, 可読性に気をつけながら使っていくべき? それともメソッドチェーンでコレクションを操作していくから分かりやすい?(僕は前者な気がするのだが)

Enumerableに限らず, Rubyは標準で豊富なライブラリを抱えています. それらに一通り目を通しておいて, 不要なコードを書かないように心がけていきたいですね.