2010-04-15 2 views
3

두 문자열을 서로 비교하고 diff 문자의 개수를 int로 얻을 수있는 라이브러리 또는 표준 API 호출이 있습니까? 필자는 인간이 읽을 수있는 diff를 출력하는 대신에 프로그래밍 방식의 diff 결과 (int 등)를 얻을 수있는 한 다른 기능에 신경 쓰지 않을 것입니다.Java : diff 카운트를 int로 반환하는 문자열 비교 라이브러리입니까?

+0

흠, 문자가 다른 경우 어떻게 결정하겠습니까? 예 : 두 개의 문자열이 다른 길이라면 더 긴 문자열의 문자는 다른 문자 또는 동일한 것으로 간주됩니까? 캐릭터의 순서가 중요합니까? – Tarski

+0

그리고 "steves car"와 "steve 's car"를 비교하는 것은 어떻습니까? 그게 한 문자가 다를 (그냥 "'''")거나 다른 6 개 문자 (전체 "' '차'")일까요? 나는이 문제를 지정하는 몇 가지 다른 방법이 있다고 생각한다. – Kip

+0

정확한 숫자가 다른 문자가 필요합니까? compareTo는 유사하지만 사전 식 순서로 무언가를 수행하고 int를 반환합니다. – Searles

답변

5

당신이 원하는 것은 Leveshtein distance입니다. 이것은 한 문자열을 다른 문자열로 변환하는 데 필요한 변경 (삽입, 삭제 또는 바꾸기)의 수를 알려줍니다. 당신이 abcdef를 얻을 수 abcde의 마지막 위치 후 f를 삽입하기 때문에 예를 들어

abcdeabcdef의 차이는, 1입니다. 두 번째를 얻을 수 f와 함께 첫 번째 문자열에 e 교체 이후

abcdeabcdf의 차이

도 1입니다.

abcdeabde의 차이는 첫 번째 문자열에서 c을 삭제하여 두 번째 문자열을 얻으므로 1입니다.

여기는 implementation in Java입니다.

+1

이전 질문이지만 링크가 끊어진 것 같습니다. –

+0

링크의 다른 쪽 끝 부분에 무엇이 있는지 알고 싶어합니다! – Troyseph

1

나는 표준 API 호출의 모르겠지만, 당신이 (놀라운 일이 아니다 - 구글, 아파치 코 몬즈 ...) 타사 라이브러리에 대한 참조를위한이 질문에 볼 수

How to perform string Diffs in Java?
How to perform string Diffs in Java?

+0

아, StringUtils.difference (str1, str2) .length() 및 StringUtils.difference (str2, str1) .length()가 정상적으로 작동해야합니다. 감사. – Zombies