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 № 1Dobrym 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");