3
votes

Résultat vide lorsque la chaîne est divisée à l'aide d'un motif

J'ai le code suivant:

String generalRequest = "4+6*12/3";
String[] operatorsLine = generalRequest.split("[0-9]+");

En conséquence, j'ai le surplus de valeur vide dans operatorsLine:

"", "+", "*", "/"

Hovewer je désire un résultat:

"+", "*", "/"


Comment ignorer l'ajout de la valeur "" dans un tableau, en utilisant la méthode String.split () ?


2 commentaires

Quel est votre résultat souhaité?


@Ghanima "+", "*", "/"


3 Réponses :


4
votes

Vous pouvez utiliser quelque chose comme:

String[] operatorsLine = Arrays.stream(generalRequest.split("[0-9]+"))
                               .filter(s -> !s.isEmpty())
                               .toArray(String[]::new);


4 commentaires

3
votes

Dans ce cas, vous n'avez besoin que d'opérateurs à caractère unique,
supprimer tous les chiffres de la chaîne et le fractionner avec une chaîne vide comme délimiteur fonctionnerait:

[+, *, /]

Ceci imprime:

String generalRequest = "4+6*12/3";
String[] operatorsLine = generalRequest.replaceAll("\\d", "").split("");
System.out.println(Arrays.toString(operatorsLine));


0 commentaires

3
votes

Que diriez-vous de fournir le deuxième paramètre à méthode split (String regex, int limit) et en la limitant avec 2 champs de sortie et en la divisant à nouveau:

String generalRequest = "4+6*12/3";
String[] operatorsLine = (generalRequest.split("\\d+", 2)[1]).split("\\d+");


0 commentaires