爲什麼Java String.split()在使用代碼中定義的字符串時會生成不同的結果,而涉及到數字時會從文件中讀取字符串?具體來說,我有一個名爲包含由空格分隔的字符和數字「的test.txt」文件:使用字符串時,Java split()的結果會有所不同
G H 5 4
分割方法並不如預期各執空間。但是,如果在代碼中創建一個字符串變量,並使用空格分隔相同的字符和數字,則split()的結果是四個單獨的字符串,一個用於char和number。下面的代碼演示了這種差異:
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();
}
}
}
結果是:
First line array length: 3
G
H
5 4
Numbers array length: 4
G
H
5
4
爲什麼從文件中的數字沒有得到解析一樣在代碼中定義的相同字符串?
該文件的內容是什麼? – Zarwan
看起來文件中的最後一個空格不是空格 – njzk2
找到一個十六進制編輯器並檢查文件中的實際內容。 '\ s'只匹配'\ t \ n \ x0B \ f \ r',但還有一些其他的「似乎是空白」的字符 –