为什么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',但还有一些其他的“似乎是空白”的字符 –