다음과 같이 Matcher() 클래스가 있습니다. find 메소드는 pattern (찾고자하는 문자열)과 source (찾으려는 문자열)의 두 문자열을 받아 들인다. 예 : pattern = "abc"및 source = "abc cda abc"가 메소드를 찾기 위해 전달됩니다. [0 4]를 반환합니다. 즉, 패턴 abc (완전 일치)가 소스의 인덱스 0 및 색인 4에서 발견됩니다. 무엇을 패턴으로 전달하든간에 문자열을 하나의 패턴으로 간주합니다. 둘 이상의 패턴을 검색하려면 다음 Matcher 클래스를 수정하지 않아도됩니다. 가장 좋은 방법은 무엇입니까? 예를 들어 다른 클래스의 find 메소드를 호출하고 arraylist에 두 개의 패턴이 저장되어 있다면 먼저 패턴 하나를 전달하고 결과를 반환하고 다시 두 번째 패턴을 전달하여 한 번에 결과를 반환하고 싶습니다. 나는 arraylist의 패턴이나 패턴을 소스에서 찾은 후에 만 처리를 중단하고 싶습니다. 너의 생각이 필요해.String Match 구현 방법
public class Matcher {
public static List<Integer> find(String pattern, String source) {
char[] x = pattern.toCharArray(), y = source.toCharArray();
int i, j, m = x.length, n = y.length;
List<Integer> result = new ArrayList<Integer>();
/* Searching */
for (j = 0; j <= n - m; ++j) {
for (i = 0; i < m && x[i] == y[i + j]; ++i)
;
if (i >= m)
result.add(j);
}
return result;
}
}
딘
건배, I 패턴 = "ABC"와 소스 = "ABC CDA ABC"방법을 찾기 위해 전달되는 경우 그것은 0 8 실시 예이어야 인덱스 4를 넣어. [0 8]을 반환합니다. 즉, 패턴 abc (완전 일치)가 소스 0의 인덱스 0과 인덱스 8에서 발견됩니다. –