0

2 つの文字列が「一致」するかどうかを知る必要があります。ここで「一致」とは、基本的に 2 つの文字列の間にかなりの重複があることを意味します。たとえば、string1 が「foo」で string2 が「foobar」の場合、これは一致するはずです。string2 が「barfoo」の場合、string1 とも一致するはずです。ただし、string2 が「fobar」の場合、これは一致しないはずです。これを行う賢い方法を見つけるのに苦労しています。最初に文字列を文字のリストに分割する必要がありますか、それとも Groovy で既にこの種の比較を行う方法はありますか? ありがとう!

4

2 に答える 2

4

Apache Commons StringUtils の使用:

@Grab( 'org.apache.commons:commons-lang3:3.1' )
import static org.apache.commons.lang3.StringUtils.getLevenshteinDistance

int a = getLevenshteinDistance( 'The quick fox jumped', 'The fox jumped' )
int b = getLevenshteinDistance( 'The fox jumped', 'The fox' )

// Assert a is more similar than b
assert a < b

レーベンシュタイン距離は、ある文字列が別の文字列になるために変更する必要がある文字数を示します

したがって、 から に到達する'The quick fox jumped''The fox jumped'は、6 文字を削除する必要があります (したがって、スコアは 6 になります)。

から に到達する'The fox jumped''The fox'は、7 文字を削除する必要があります。

于 2013-07-04T08:09:56.433 に答える