我有一个类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处找到。 –