Java StringTokenizer.nextToken () ignore les champs vides
Je suis à l'aide d'un onglet (/t) comme délimiteur et je sais qu'il ya des champs vides dans mes données, par exemple:
one->two->->three
Où -> est égal à l'onglet. Comme vous pouvez le voir un champ vide est toujours correctement entouré par des onglets.
Les données sont recueillies à l'aide d'une boucle :
while ((strLine = br.readLine()) != null) {
StringTokenizer st = new StringTokenizer(strLine, "\t");
String test = st.nextToken();
...
}
Encore Java ignore cette "chaîne vide" et ignore le terrain.
Est-il un moyen de contourner ce comportement et de la force de java pour lire dans les champs vides de toute façon?
source d'informationauteur FireFox
Vous devez vous connecter pour publier un commentaire.
Il y a un RFE dans le Soleil de la base de données de bogues à propos de cette
StringTokenizer
problème avec un statutWill not fix
.L'évaluation de cette RFE unis, je cite:
Et propose ensuite à l'aide de
String#split(String)
méthode.Merci à tous. En raison pour le premier commentaire, j'ai été capable de trouver une solution:
Oui, vous avez raison, je vous remercie pour votre référence:
Vous pouvez utiliser
Apache
Communes StringUtils.splitPreserveAllTokens(). C'est exactement ce dont vous avez besoin.Je voudrais utiliser La goyave est Splitterqui n'a pas besoin de tous les grands regex machines, et est plus sage que la Chaîne de
split()
méthode:Comme vous pouvez le voir dans la Java Doc http://docs.oracle.com/javase/6/docs/api/java/util/StringTokenizer.html vous pouvez utiliser le Constructeur
public StringTokenizer(String str, String delim, boolean returnDelims)
avecreturnDelims
true
On en revient donc à chaque Délimiteur comme une autre chaîne!
Edit:
NE PAS utiliser de cette façon, comme @npe déjà tapé, StringTokenizer ne doit pas être utilisé plus! Voir La JavaDoc: