는 기본적으로 난 그냥 {"pie", "delicious", "test"}
자바 : 누구든지 배열에서 문자열의 가장 일치하는 방법을 찾을 수 있습니까?
이 꽤 명백하다에 "delicous"
을 발견, 예를 들어, String
의 가장 가까운 (반드시 정확하지 않음)를 찾을 수있는 방법을 찾기 위해 노력하지만,있어의 값 배열이 항상 별개의 것은 아닙니다.
이 문제를 해결하는 방법을 알려 주실 수 있습니까?
는 기본적으로 난 그냥 {"pie", "delicious", "test"}
자바 : 누구든지 배열에서 문자열의 가장 일치하는 방법을 찾을 수 있습니까?
이 꽤 명백하다에 "delicous"
을 발견, 예를 들어, String
의 가장 가까운 (반드시 정확하지 않음)를 찾을 수있는 방법을 찾기 위해 노력하지만,있어의 값 배열이 항상 별개의 것은 아닙니다.
이 문제를 해결하는 방법을 알려 주실 수 있습니까?
"가장 가까운"을 정의하는 방법에 따라 다르지만 한 가지 공통적 인 방법은 Levenshtein Distance 점수를 사용하는 것입니다. Apache Commons에는 a method in StringUtils이 있습니다.
검색 방법은 기본적으로 다음과 같습니다. 지정된 입력에 대해 가장 작은 Levenshtein 거리를 가진 문자열을 컬렉션에서 찾습니다.
Java 용으로 만들어진 것은 없습니다. SecondString 또는 FREJ과 같은 타사 라이브러리를 사용해보십시오.
Levenshtein Distance와 함께 사용할 수있는 또 다른 방법은 단어의 음성 표현을 먼저 취하는 것입니다. 이를 수행하는 알고리즘 중 하나는 Metaphone입니다.
user guide for Apache Commons Codec에는이 및 일부 다른 인코더에 대한 세부 정보가 있습니다.
감사합니다, 이것은 꽤 잘 작동하고 있습니다 :) chocolatedessert와 chocolatepie가 있고 chocolatedes를 입력하면 여전히 파이를 사용하는 것처럼 보이지만 여전히 이전보다 훨씬 좋습니다 : p 감사합니다. –
두 번째 링크가 끊어졌습니다. 업데이트하십시오. (링크 일 가능성이 있습니다 - https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#getLevenshteinDistance(java.lang.CharSequence,%20java.lang. CharSequence)) –
@ KazekageGaara 감사합니다. –