evasi0n:
以前、私はマッチのように対応するために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)
}
そして私は、私がもし1で、この3試合をenglobeし、対応するマッチャー:)などで自分のマップに置くことができるかどうかを知りたいです:
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));
}
}
Amongalen:
単一のものを使用して3「IFS」を交換することはできません。マップに追加0-3要素を有するもたらすブロック「が」第一のケースでは、単一interationにあなたは3,2,1又は0に入ることができることに留意されたいです。あなたが唯一の最高の状態で、マップに最大で1添加元素で得られた「場合」と入力します「場合は、」あなたは、単一にすべての3つの条件をマージする場合。
ただし、すべてのマッチャーのコレクションを作成し、一致すると、それらのそれぞれのために追加実行することができます。それは次のようになります。
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種類以上のmatcherを持っているならば、私はこのような何かを検討します。