code

주어진 문자열에 주어진 하위 문자열이 포함 된 경우 관용적 스칼라 검색 방법은 무엇입니까?

codestyles 2020. 12. 4. 08:14
반응형

주어진 문자열에 주어진 하위 문자열이 포함 된 경우 관용적 스칼라 검색 방법은 무엇입니까?


스칼라에 두 개의 문자열이 있는데 더 큰 문자열 ( 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

이 정규식 스타일도 제공 할 것이라고 대답했지만

scala> "I have a needle in my haystack" matches ".*needle.*"
res10: Boolean = true

참고 URL : https://stackoverflow.com/questions/10126504/what-is-the-idiomatic-scala-way-of-finding-if-a-given-string-contains-a-given-s

반응형