/ / Pouvez-vous mettre Java Retval dans un tableau - java, tableaux, regex, chaîne

Pouvez-vous mettre Java Retval dans un tableau - Java, tableaux, regex, string

Je "scrute un tableau d’objets String, chaque objet string va être décomposé en une regex.

Lorsque je passe à travers une boucle for améliorée, je me demande s’il est possible de placer le retval dans un tableau.

Par exemple, si j'ai String regex = new String [3];

Où regex [0] = "EVEN_BIN_NUM (0 | 1) * 0"

La boucle for améliorée peut diviser mon objet String en EVEN_BIN_NUM et (0 | 1) * 0

Je veux pouvoir mettre EVEN_BIN_NUM dans un tableau et (0 | 1) * 0 dans un autre tableau. Voici le code que j'ai qui parcourt le tableau String avec les objets 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);
}
}

Pour regex [0] .split ("", 2) je reçois EVEN_BIN_NUM et (0 | 1) * 0 est renvoyé séparément.

Alternativement, si vous savez comment mieux casser cela, faites le moi savoir: EVEN_BIN_NUM (0 | 1) * 0

ODD_BIN_NUM (0 | 1) * 1

PET (chat | chien)

Les parties en majuscules doivent être placées dans le tableau "type" et le reste doit être placé dans un autre tableau.

Ainsi, le type tableau aurait trois chaînes, et l'autre tableau aurait trois chaînes.

Espérons que ce n’est pas trop déroutant ...

Réponses:

0 pour la réponse № 1

Il peut être judicieux d’utiliser un objet Map pour stocker vos informations. Toutefois, si vous souhaitez renvoyer votre analyse sous forme de tableau, vous pouvez également renvoyer un tableau de tableaux et procéder comme suit.

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

}

Vous pouvez ensuite accéder aux données comme suit

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

etc.

Ou en utilisant une carte:

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

}

De cette façon, vos propriétés seraient directement associées à vos modèles.

Par exemple:

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