Pourquoi Java String.split() génère-t-il des résultats différents lorsque l'on travaille avec une chaîne de caractères définie dans le code et une chaîne de caractères lue dans un fichier lorsque des nombres sont impliqués ? Plus précisément, j'ai un fichier appelé "test.txt" qui contient des caractères et des nombres séparés par des espaces :
G H 5 4
La méthode split ne sépare pas les espaces comme prévu. Mais si une variable chaîne est créée dans le code avec les mêmes caractères et chiffres séparés par des espaces, alors le résultat de split() est quatre chaînes individuelles, une pour le caractère et le chiffre. Le code ci-dessous illustre cette différence :
import java.io.File;
import java.io.FileReader;
import java.io.BufferedReader;
public class SplitNumber {
//Read first line of text file
public static void main(String[] args) {
try {
File file = new File("test.txt");
FileReader fr = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fr);
String firstLine;
if ((firstLine = bufferedReader.readLine()) != null) {
String[] firstLineNumbers = firstLine.split("\\s+");
System.out.println("First line array length: " + firstLineNumbers.length);
for (int i=0; i<firstLineNumbers.length; i++) {
System.out.println(firstLineNumbers[i]);
}
}
bufferedReader.close();
String numberString = "G H 5 4";
String[] numbers = numberString.split("\\s+");
System.out.println("Numbers array length: " + numbers.length);
for (int i=0; i<numbers.length; i++) {
System.out.println(numbers[i]);
}
} catch(Exception exception) {
System.out.println("IOException occured");
exception.printStackTrace();
}
}
}
Le résultat est le suivant :
First line array length: 3
G
H
5 4
Numbers array length: 4
G
H
5
4
Pourquoi les nombres provenant du fichier ne sont-ils pas analysés de la même manière que la même chaîne définie dans le code ?