어떻게지도와 일치를 사용하여 코드의 내 역할을 수행 할 수 있습니다?

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)
    }

그리고 내가 만약 일이 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 조건을 병합합니다.

그러나 모든 매처 (Matchers)의 컬렉션을 만들 수 있습니다 다음 일치하고 각각에 대해 추가 수행합니다. 그것은 다음과 같이 보일 것입니다 :

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 매처 (Matchers)의 경우는 코드를과 복잡함을 할 것입니다하지만 당신은 이상의 5 가지 매처 (Matchers)이있는 경우 다음 나는 같은 것을 고려할 것입니다.

추천

출처http://43.154.161.224:23101/article/api/json?id=373222&siteId=1