我想执行我的这部分代码,因为以前我有3个IF相应匹配像
if (matcher1.find()) {
myMap.put(matcher1.group(1), matcher1.group(2)
}
if (matcher2.find()) {
myMap.put(matcher2.group(1), matcher2.group(2)
}
if (matcher3.find()) {
myMap.put(matcher3.group(1), matcher3.group(2)
}
我想知道如果我可以用一个如果englobe这3比赛,并把我的地图与相应的匹配:),如:
for (int i = 0; i < result.size(); i++) {
Matcher matcher1= patternRecordType.matcher(result.get(i));
Matcher matcher2 = patternCustomerAreaRecordType.matcher(result.get(i));
Matcher match3 = patternTotal.matcher(result.get(i));
if (matcher1.find() || matcher2.find() || matcher3.find()) {
myMap.put(matcherX.group(1), matcherX.group(2));
}
}
这是不可能用单一一个取代你的3个“如果”。注意,在第一种情况下,在一个单一的互为作用可以“如果”,导致具有添加到地图0-3元件块进入3,2,1或0。如果合并所有三个条件成一个单一的“如果”就进入了“如果”只是一个充其量为至多1加元到地图中产生的。
但是,您可以创建所有的匹配器的集合,然后进行匹配,并增加对他们每个人。这将是这个样子:
List<Matcher> matchers = new ArrayList<>();
Matcher matcher1= patternRecordType.matcher(result.get(i));
Matcher matcher2 = patternCustomerAreaRecordType.matcher(result.get(i));
Matcher matcher3 = patternTotal.matcher(result.get(i));
matchers.add(matcher1);
matchers.add(matcher2);
matchers.add(matcher3);
for (Matcher matcher : matchers){
if (matcher.find()) {
myMap.put(matcher.group(1), matcher.group(2));
}
}
对于只有3个匹配器将它过于复杂的代码,但如果你有超过5种不同的匹配器,那么我会考虑这样的事情。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句