您可以为此使用正则表达式和匹配器。但是您不能使用字符串列表,但可以在运行时构建它。
Matcher m = Pattern.compile("^(//|/\\*|\\*|\\{|\\}).*").matcher("");
if (!matcher.reset(strLine).matches()) {
// does not start
}
样本 :
String str = "abc\n// foo\n/* foo */\nthing\n{bar\n{baz\nlol";
Matcher matcher = Pattern.compile("^(//|/\\*|\\*|\\{|\\}).*").matcher("");
for (String strLine : str.split("\n")) {
if (!matcher.reset(strLine).matches()) {
System.out.println(strLine + " does not match");
}
}
印刷:
abc does not match
thing does not match
lol does not match
您可以使用以下方法动态构建模式Pattern.quote
:
public static Pattern patternOf(List<String> starts) {
StringBuilder b = new StringBuilder();
for (String start: starts) {
b.append("|").append(Pattern.quote(start));
}
return Pattern.compile("^(" + b.substring(1) + ").*");
}
// use it like this:
Matcher matcher = patternOf(Arrays.asList("//", "/*", "*", "{", "}")).matcher("");
// produces a pattern like: ^(\Q//\E|\Q/*\E|\Q*\E|\Q{\E|\Q}\E).*