我有一個類Matcher(),如下所示。 find方法接受兩個字符串:pattern(要查找的字符串)和source(要查找的字符串)。例如,如果pattern =「abc」和source =「abc cda abc」被傳遞給find方法。它返回[0 4],即在源的索引0和索引4處發現模式abc(精確匹配)。無論你傳遞給圖案,它都會將該字符串視爲一種圖案。不修改以下匹配類,如果我想搜索多個模式。什麼是最好的方式來做到這一點?例如,我想調用其他類的find方法,如果我有兩個模式存儲在arraylist然後我想先傳遞一個模式,並返回結果,並再次通過第二個模式,並在一次返回結果。我只想在源文件中查找arraylist中的模式或模式之後才停止處理。需要你的想法。字符串匹配如何實現
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;
}
}
我把索引4.應當0和8實施例,如果圖案=「ABC」和源=「ABC CDA ABC」被傳遞給查找方法。它返回[0 8],即模式abc(精確匹配)在索引0和源索引8處找到。 –