web-dev-qa-db-fra.com

Fractionner une chaîne en Java sur plusieurs symboles

Je veux diviser une chaîne lorsque les symboles rencontrés "+, -, *, /, =" J'utilise la fonction split mais cette fonction ne peut prendre qu'un argument. De plus, il ne fonctionne pas sur "+". J'utilise le code suivant: -

Stringname.split("Symbol");

Merci.

13
Saumyaraj

String.split prend une expression régulière en argument.

Cela signifie que vous pouvez alterner n'importe quel symbole ou abstraction de texte dans un paramètre afin de scinder votre String

Voir la documentation ici

Voici un exemple dans votre cas: 

String toSplit = "a+b-c*d/e=f";
String[] splitted = toSplit.split("[-+*/=]");
for (String split: splitted) {
    System.out.println(split);
}

Sortie: 

a
b
c
d
e
f

Remarques: 

  • Les caractères réservés pour Patterns doivent être à double échappement avec \\. Edit: Pas nécessaire ici. 
  • Les crochets [] dans le motif indiquent une classe de caractères.
  • Plus sur Patterns ici .
37
Mena

Vous pouvez utiliser une expression régulière:

String[] tokens = input.split("[+*/=-]");

Remarque: - doit être placé en première ou dernière position pour vous assurer qu'il n'est pas considéré comme un séparateur de plage.

9
assylias

Vous avez besoin d'une expression régulière. De plus, vous avez besoin de l'opérateur regex OR:

String[]tokens = Stringname.split("\\+|\\-|\\*|\\/|\\=");
5
Dennis Kriechel

Pour cela, vous devez utiliser une instruction regex appropriée. La plupart des symboles que vous avez listés sont réservés dans regex, vous devrez donc les échapper avec \.

Une expression très basique serait \+|\-|\\|\*|\=. Relativement facile à comprendre, chaque symbole souhaité est échappé avec \, et chaque symbole est séparé par le symbole | (ou). Si, par exemple, vous vouliez également ajouter ^, il vous suffirait d'ajouter |\^ à cette instruction.

Pour les tests et les expressions rapides, j'aime utiliser www.regexpal.com 

1
Deactivator2