私はこのような文字列を持っています:
val a = "some random test message"
私はこのようなリストを持っています:
val keys = List("hi","random","test")
次に、文字列a
にkeys
の値が含まれているかどうかを確認します。 Scalaの組み込みライブラリ関数を使用してこれを行うにはどうすればよいですか?
(a
をListに分割し、keys
listでチェックして解決策を見つける方法を知っています。しかし、標準ライブラリ関数を使用してより簡単に解決する方法を探しています)
このようなもの?
keys.exists(a.contains(_))
またはさらに慣用的に
keys.exists(a.contains)
単純なケースは、部分文字列の包含をテストすることです(rarry
の答えで述べたように)。
keys.exists(a.contains(_))
代わりに、Word全体の一致を実際に検索するかどうかを言わなかった。 rarry
の答えはあなたがそうしなかったと仮定しているので、ここにあなたがそうしていると仮定する代替案があります。
val a = "some random test message"
val words = a.split(" ")
val keys = Set("hi","random","test") // could be a List (see below)
words.exists(keys contains _)
キーのlistは小さなリストに対してのみ効率的であることに注意してください。リストでは、contains
メソッドは通常、一致するものが見つかるか最後に達するまでリスト全体を線形にスキャンします。
アイテムの数が多い場合、セットは望ましいだけでなく、情報のより正確な表現でもあります。通常、セットはハッシュコードなどを介して最適化されるため、線形検索の必要性は低くなります。