2014-09-19 5 views
0

String 객체 배열을 스캔하면서 각 문자열 객체를 정규식으로 분해합니다.Java Retval을 배열에 넣을 수 있습니까?

향상된 for-loop를 살펴볼 때 궁금한 점이 있습니까? retval을 배열에 넣을 수 있습니까?

예를 들어 String regex = new String [3];

내 문자열 EVEN_BIN_NUM들로 객체를 나눌 수에 대한 루프 강화 및 |

정규식 [0] = "(1 0) * 0 EVEN_BIN_NUM"

(0 | 1) * 0

I 하나의 배열에 EVEN_BIN_NUM을, 다른 배열에 (0 | 1) * 0을 넣을 수 있기를 원합니다. 여기에 내가 문자열로 문자열 배열을 통해 스캔

/* 
    * Run through each String object and appropriately place them in the kind, 
    * and explicit. 
    */ 
    for (int j = 0; j < regex.length; j++) 
    { 
     for (String retval: regex[j].split(" ", 2)) 
     { 
      System.out.println(retval); 
     } 
    } 
정규식 [0] .split를 ("", 2)를 얻을 EVEN_BIN_NUM를 들어

및 오브젝트 것을 가지고있는 코드 (0 | 1) * 0 개별적으로 돌려 보냈다. 당신은 더 좋은 방법이를 나누는 방법을 알고있는 경우

또는 알려 : * 1 개

PET ( EVEN_BIN_NUM (0 | | 1) * 0

ODD_BIN_NUM (1 0) cat | dog)

대문자는 "kind"배열에 넣고 나머지는 다른 배열에 넣습니다.

따라서 종류 배열에는 3 개의 문자열이 있고 다른 배열에는 3 개의 문자열이 있습니다.

는 희망이

+0

당신은 결국 당신이 for 루프에서 반복되는 요소 식별, 그래서 그냥 정상적인 루프를 작성하고 해당 배열에 반환 값을 할당 어떻게든지해야합니다. – nhahtdh

답변

0

그것은 당신이 배열로 분석을 반환하기를 원한다면, 그러나, 귀하의 정보를 저장하는 Map 객체를 사용하는 것이 좋습니다 수 있습니다 당신이 할 수 너무 혼란 .... 아니다 배열 배열을 반환하고 다음을 수행하십시오.

String firstProperty = split[0][0]; //EVEN_BIN_NUM 
String firstRegex = split[0][1];  //(0|1)*0 

String secondProperty = split[1][0]; //ODD_BIN_NUM 
String secondRegex = split[1][1];  //(0|1)*1 

등등을 다음과 같이

String[] regex = {"EVEN_BIN_NUM (0|1)*0", "ODD_BIN_NUM (0|1)*1", "PET (cat|dog)"} ; 
String[][] split = new String[regex.length][]; 

for(int i = 0; i < regex.length; i++) { 
    split[i] = regex[i].split(" ", 2); 

} 

그런 다음 데이터에 액세스 할 수 있습니다.

또는지도를 사용 : 당신의 재산이 패턴에 바로 매핑 할

Map<String, Pattern> map = new HashMap<>(); 

for(int i = 0; i < regex.length; i++) { 
    String[] splitLine = regex[i].split(" ", 2); 
    map.put(splitLine[0], Pattern.compile(splitLine[1])); 

} 

이 방법. 예를 들어

:

Pattern petPattern = map.get("PET"); 
관련 문제