Découvrez le programme ci-dessous.
try {
for (String data : Files.readAllLines(Paths.get("D:/sample.txt"))){
String[] de = data.split(";");
System.out.println("Length = " + de.length);
}
} catch (IOException e) {
e.printStackTrace();
}
Sample.txt:
1; 2; 3; 4 A; B ;; A; b; c;
Sortie:
Longueur = 4 Longueur = 2 Longueur = 3
Pourquoi les deuxième et troisième sorties donnent 2 et 3 au lieu de 4. Dans sample.txt
fichier, la condition pour la 2ème et la 3ème ligne doit donner une nouvelle ligne (\n
ou entrez) immédiatement après avoir délimité le troisième champ. Quelqu'un peut-il m'aider à obtenir une longueur de 4 pour les 2e et 3e lignes sans changer la condition du sample.txt
fichier et comment imprimer les valeurs de de[2]
(jette ArrayIndexOutOfBoundsException
)?
Vous pouvez spécifier d'appliquer le motif le plus souvent possible avec:
String[] de = data.split(";", -1);
Voir Javadoc pour la méthode de partage prenant deux arguments pour plus de détails.
jetez un oeil à la docs , voici la citation importante:
[...] the array can have any length, and trailing empty strings will be discarded.
Si vous n'aimez pas cela, jetez un œil au commentaire de Fabian. Lors de l'appel de String.split(String)
, il appelle String.split(String, 0)
et cela supprime les chaînes vides de fin (comme le disent les docs), lors de l'appel de String.split(String, n)
avec n < 0
ne jettera rien.