1. ホーム
  2. regex

[解決済み] 与えられた文字列が与えられた部分文字列を含んでいるかどうかを見つけるための、scala の慣用的な方法は何ですか?

2022-02-04 18:53:53

質問

scalaで2つの文字列を持っていて、大きい方の文字列( needle ) は、小さい文字列 ( haystack ).

私が見つけたのは、このような正規表現とマッチで行うことです( この質問から ):

needle.r.pattern.matcher(haystack).matches

これは、(1)このような単純な問題としては非常に複雑すぎるが、より重要なのは、(2)私にはうまくいかないということだ。

"needle".r.pattern.matcher("Finding needle in haystack").matches

リターン

Boolean = false

解決方法は?

もし最大限の効率でやりたいなら、自分で書かなければならないかもしれません(あるいは、どこかに良い部分文字列検索アルゴリズムがあるかもしれません)。 ただ少しでも動くようにしたいのであれば、Scalaで。

scala> "Finding needle in haystack" contains "needle"
res0: Boolean = true

scala> "Finding needle in haystack" indexOf "needle"
res1: Int = 8

これらは ではない を検索します。 正規表現マッチの使い方も正しくありません(編集:このコードはマッチする部分文字列を探すのではなく、文字列全体との完全一致を求めるものだからです)が、それは別の問題です。 もしマッチした数のカウントが必要なら、次のようなことができます。

scala> "needle".r.findAllIn("Finding needle in haystack").length
res2: Int = 1