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("-\\.");
}
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 "."
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.
Vous pouvez utiliser l'expression rationnelle "\ W". Cela correspond à n'importe quel caractère autre que Word.
String[] tokens=pdfName.split("\\W");
En utilisant Goyave vous pourriez faire ceci:
Iterable<String> tokens = Splitter.on(CharMatcher.anyOf("-.")).split(pdfName);
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 []
.)
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
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"}
Essayez ce code:
var string = 'AA.BB-CC-DD.Zip';
array = string.split(/[,.]/);
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("-|\\.");
}
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é.
String[] token=s.split("[.-]");
s.trim().split("[\\W]+")
devrait marcher.