J’essaie de scinder une chaîne en 29 jetons … ssortingngtokenizer ne renvoie pas de jetons nuls J’ai essayé ssortingng.split, mais je crois que je fais quelque chose de mal:
Ssortingng [] ssortingngs = line.split(",", 29);
exemples d’entrées:
10150,15:58,23:58,16:00,00:00,15:55,23:55,15:58,00:01,16:03,23:58,,,,,16:00,23:22,15:54,00:03,15:59,23:56,16:05,23:59,15:55,00:01,,,, 10155,,,,,,,,,,,07:30,13:27,07:25,13:45,,,,,,,,,,,07:13,14:37,08:01,15:23 10160,10:00,16:02,09:55,16:03,10:06,15:58,09:48,16:07,09:55,16:00,,,,,09:49,15:38,10:02,16:04,10:00,16:00,09:58,16:01,09:57,15:58,,,,
Si vous souhaitez que les chaînes vides à la fin soient conservées, mais que vous ne souhaitiez pas atsortingbuer un nombre magique maximum, utilisez une limite négative:
line.split(",", -1)
Si line.equals("a,,c")
, alors line.split(",", -1)[1].isEmpty()
; ce n’est pas null
. En effet, lorsque ","
est le délimiteur, ",,"
a une chaîne vide entre les deux délimiteurs, et non null
.
Exemple:
En utilisant l’explication ci-dessus, considérons l’exemple suivant: ",,"
Bien que vous puissiez vous attendre à ","
, null
et ","
.
Le résultat réel est ","
, ""
et ","
Si vous voulez null
au lieu de chaînes vides dans le tableau renvoyé par split
, vous devez alors parsingr manuellement le tableau et les remplacer par null
. Je ne suis pas sûr pourquoi s == null
est meilleur que s.isEmpty()
, cependant.
Ssortingng.indexOf
et chaînes vides Utilisez SsortingngUtils.splitPreserveAllTokens()
dans la bibliothèque Apache Commons Lang
Si vous voulez que les jetons vides soient conservés, ssortingng.split
ne fonctionnera pas de manière satisfaisante. SsortingngTokenizer
n’aura pas non plus de travail. Je suis venu avec la méthode suivante, qui pourrait être utile pour vous
public static Ssortingng[] splitTotokens(Ssortingng line, Ssortingng delim){ Ssortingng s = line; int i = 0; while (s.contains(delim)) { s = s.subssortingng(s.indexOf(delim) + delim.length()); i++; } Ssortingng token = null; Ssortingng remainder = null; Ssortingng[] tokens = new Ssortingng[i]; for (int j = 0; j < i; j++) { token = line.substring(0, line.indexOf(delim)); //System.out.print("#" + token + "#"); tokens[j] = token; remainder = line.substring(line.indexOf(delim) + delim.length()); //System.out.println("#" + remainder + "#"); line = remainder; } return tokens;` }
Si vous voulez que les jetons vides soient conservés, ssortingng.split()
ne fonctionnera pas de manière satisfaisante. SsortingngTokenizer
ne fonctionnera pas non plus. Je suis venu avec la méthode suivante, qui pourrait être utile pour vous:
public static Ssortingng[] splitTotokens(Ssortingng line, Ssortingng delim){ Ssortingng s = line; int i = 0; while (s.contains(delim)) { s = s.subssortingng(s.indexOf(delim) + delim.length()); i++; } Ssortingng token = null; Ssortingng remainder = null; Ssortingng[] tokens = new Ssortingng[i]; for (int j = 0; j < i; j++) { token = line.substring(0, line.indexOf(delim)); // System.out.print("#" + token + "#"); tokens[j] = token; remainder = line.substring(line.indexOf(delim) + delim.length()); //System.out.println("#" + remainder + "#"); line = remainder; } return tokens; }
use this org.springframework.util.SsortingngUtils org.springframework.util.SsortingngUtils.delimitedListToSsortingngArray(data, delimit);
Cette classe fournit des fonctionnalités simples et fournit des méthodes faciles à utiliser pour convertir des chaînes délimitées, telles que des chaînes CSV, des collections et des tableaux.