web-dev-qa-db-fra.com

Utilisez String.split () avec plusieurs délimiteurs

Je dois diviser une base de chaîne sur le délimiteur - et .. Vous trouverez ci-dessous ma sortie souhaitée. 

AA.BB-CC-DD.Zip -> 

AA
BB
CC
DD
Zip 

mais mon code suivant ne fonctionne pas.

private void getId(String pdfName){
    String[]tokens = pdfName.split("-\\.");
}
164
Thang Pham

Je pense que vous devez inclure l'opérateur regex OR:

String[]tokens = pdfName.split("-|\\.");

Ce que vous avez va correspondre "-." pas un "-" ou une "."

273
Richard H

Essayez cette expression régulière "[-.]+". Le signe + après traite les caractères de délimitation consécutifs comme un seul. Supprimer plus si vous ne le souhaitez pas.

46
Peter Knego

Vous pouvez utiliser l'expression rationnelle "\ W". Cela correspond à n'importe quel caractère autre que Word.

String[] tokens=pdfName.split("\\W");
23
Varun Gangal

En utilisant Goyave vous pourriez faire ceci:

Iterable<String> tokens = Splitter.on(CharMatcher.anyOf("-.")).split(pdfName);
12
ColinD

La chaîne que vous donnez split est la forme de chaîne d'une expression régulière, ainsi:

private void getId(String pdfName){
    String[]tokens = pdfName.split("[\\-.]");
}

Cela signifie que vous séparez n'importe quel caractère dans le [] (nous devons échapper le - avec une barre oblique inversée car c'est spécial à l'intérieur de []; et bien sûr, nous devons échapper à la barre oblique inverse car il s'agit d'une chaîne). (Inversement, . est normalement spécial mais n'est pas spécial à l'intérieur de [].)

10
T.J. Crowder

J'utiliserais Apache Commons:

importer org.Apache.commons.lang3.StringUtils;

private void getId(String pdfName){
    String[] tokens = StringUtils.split(pdfName, "-.");
}

Il se scinde sur l'un des séparateurs spécifiés, contrairement à StringUtils.splitByWholeSeparator(str, separator) qui utilise la chaîne complète comme séparateur

3
Edd

Pour les séquences de deux caractères en tant que délimiteurs "AND" et "OR", cela devrait fonctionner. N'oubliez pas de couper pendant l'utilisation.

 String text ="ISTANBUL AND NEW YORK AND PARIS OR TOKYO AND MOSCOW";
 String[] cities = text.split("AND|OR"); 

Résultat: cities = {"ISTANBUL", "NEW YORK", "PARIS", "TOKYO", "MOSCOU"}

3
ÖMER TAŞCI

Essayez ce code:

var string = 'AA.BB-CC-DD.Zip';
array = string.split(/[,.]/);
0
Newbie

Vous pouvez également spécifier une expression régulière en tant qu'argument dans la méthode split () .voir ci-dessous exemple ....

private void getId(String pdfName){
String[]tokens = pdfName.split("-|\\.");
}
0
Avdhesh Yadav

Il vaut mieux utiliser quelque chose comme ça:

s.split("[\\s\\-\\.\\'\\?\\,\\_\\@]+");

Ont ajouté quelques autres caractères comme exemple. C'est le moyen le plus sûr à utiliser, car la façon dont . et ' est traité.

0
Pritam Banerjee
String[] token=s.split("[.-]");
0
Nitish
s.trim().split("[\\W]+") 

devrait marcher.

0
sss