/ / Can You Put Java Retval Intray an Array - java, arrays, regex, string

Czy możesz umieścić Java Retval w tablicy - java, tablice, regex, string

Skanuję tablicę obiektów typu String, każdy obiekt typu String zostanie rozbity na wyrażenie regularne.

Zastanawiam się, czy przechodząc przez rozszerzoną pętlę for, można umieścić retval w tablicy?

Na przykład, jeśli mam ciąg regex = nowy ciąg [3];

Gdzie wyrażenie regularne [0] = "EVEN_BIN_NUM (0 | 1) * 0"

Ulepszona pętla for może podzielić mój obiekt String na EVEN_BIN_NUM i (0 | 1) * 0

Chcę móc umieścić EVEN_BIN_NUM w jednej tablicy i (0 | 1) * 0 w innej tablicy. Oto kod, który mam, który skanuje tablicę String z obiektami string

    /*
* 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);
}
}

Dla wyrażenia regularnego [0] .split ("", 2) otrzymuję EVEN_BIN_NUM i (0 | 1) * 0 zwracane osobno.

Ewentualnie, jeśli wiesz, jak to lepiej rozwiązać, daj mi znać: EVEN_BIN_NUM (0 | 1) * 0

ODD_BIN_NUM (0 | 1) * 1

PET (kot | pies)

Części dużymi literami należy umieścić w „miłej” tablicy, a resztę w innej tablicy.

Tak więc tablica rodzaju miałaby trzy łańcuchy, a druga tablica miałaby trzy łańcuchy.

Mam nadzieję, że nie jest to zbyt mylące ...

Odpowiedzi:

0 dla odpowiedzi № 1

Dobrym pomysłem może być użycie obiektu Map do przechowywania informacji, jednak jeśli chcesz zwrócić analizę jako tablicę, możesz zwrócić tablicę tablic i wykonać następujące czynności.

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

}

Następnie możesz uzyskać dostęp do danych w następujący sposób

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

etcetera.

Lub używając mapy:

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]));

}

W ten sposób twoje właściwości zostaną zmapowane bezpośrednio do twoich Wzorów.

Na przykład:

Pattern petPattern = map.get("PET");