web-dev-qa-db-fra.com

Comment diviser une chaîne en deux délimiteurs?

Je sais que vous pouvez diviser votre chaîne en utilisant myString.split("something"). Mais je ne sais pas comment diviser une chaîne en deux délimiteurs.

Exemple:

mySring = "abc==abc++abc==bc++abc";

J'ai besoin de quelque chose comme ça:

myString.split("==|++")

Quelle est son expression régulière?

16
Bobs

Utilisez ceci :

 myString.split("(==)|(\\+\\+)")
32
Denys Séguret

Comment je le ferais si je devais diviser en utilisant deux sous-chaînes:

String mainString = "This is a dummy string with both_spaces_and_underscores!"
String delimiter1 = " ";
String delimiter2 = "_";
mainString = mainString.replaceAll(delimiter2, delimiter1);
String[] split_string = mainString.split(delimiter1);

Remplacez toutes les instances du deuxième délimiteur par le premier et divisez par le premier.

Remarque: l'utilisation de replaceAll vous permet d'utiliser l'expression rationnelle pour delimiter2. Donc, vous devez réellement remplacer toutes les correspondances de delimiter2 Par une chaîne qui correspond à l'expression rationnelle de delimiter1.

10
Prasanth

Vous pouvez utiliser ceci

        mySring = "abc==abc++abc==bc++abc";
        String[] splitString = myString.split("\\W+");

Expression régulière \ W + ---> il divisera la chaîne en fonction d'un caractère non Word.

7

Essaye ça

String str = "aa==bb++cc";
String[] split = str.split("={2}|\\+{2}");
System.out.println(Arrays.toString(split));

La réponse est un tableau de

[aa, bb, cc]

Le {2} correspond à deux caractères du caractère procédural. Soit = ​​ou + (échappé) Le | correspond à chaque côté

J'échappe au\in Java donc le regex est en fait ={2}|\+{2}

5
RNJ