Comment diviser une chaîne délimitée par des virgules dans un tableau de chaînes vides
Je veux split ",,,"
à un tableau de 4 ""
à l'aide de la String.split()
Voici mon code:
String str = ",,,";
String[] tokens = str.split(",");
Toutefois, le résultat des jetons étaient un tableau vide: [], plutôt qu'un tableau de 4 ""
(["","","",""])
que je le voulais.
J'ai testé de changer le str
un peu:
String str = ",,,1";
String[] tokens = str.split(",");
Cette fois, le résultat des jetons ont été ["","","","1"]
. C'est proche de ce que je veux, mais je ne veux vraiment pas à l'ajouter à "1" avant de faire la split.
Le problème, c'est que fondamentalement, l' String.split()
retourne un tableau vide si elle ne contient que des éléments vides ""
.
Peut vous aider à résoudre le problème?
source d'informationauteur Changwang Zhang
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin d'utiliser la surcharge
String#split(regex, limite)
méthode qui prend en paramètre de limite.De la docs(l'emphase est mienne):
Explication: Lorsque vous ne fournissez pas la limite de l'argument ou de fournir des "zéro" comme à la limite, le
split()
les rejets de fuite des champs vides. Lorsque vous fournissez un positif limite argument, il limite le nombre de champs à cette limite. Mais lorsque vous fournissez une limite négative, lasplit()
méthode permet à un certain nombre de domaines et aussi de ne pas jeter le suiveur des champs vides. Pour être plus clair, regardez le code source de la#split(regex, limite)
qui a de cet extrait à la fin(les commentaires ont été ajoutés par moi et n'étaient pas présents dans le code source).Remarque: Si vous n'indiquez pas de limite d'argument, le
split()
méthode sans limite argument appelle la surchargesplit()
méthode comme ceci.Et à noter également que,
String#split(regex, limite)
en interne appelle la#split(regex, limite)
.