我正在尝试从文件中读取和写入一些数据,并使用split()方法从写入的数据中计算出非常简单的功能,例如空格数等。这是我尝试过的。
File file=new File("G:\\AAA.txt");
FileWriter fw=new FileWriter(file);
fw.write("AAAAAAAA");
fw.flush();
fw.close();
FileReader fr=new FileReader(file);
String spaces="\\s";
BufferedReader br=new BufferedReader(fr);
String data=br.readLine();
System.out.println(data);
String[] tokenize=data.split(spaces);
System.out.println(tokenize.length);
我的问题是,如果没有空格,虽然必须为0,但我却得到的答案是1。当给我1个空格时,它打印为2。在给定的空格中,答案总是大于1。
有人可以向我解释未得到确切答案的原因。
最佳答案
从String.split的docs
如果表达式与输入的任何部分都不匹配,则结果数组只有一个元素,即此字符串。
因此,如果没有空格,将返回原始字符串,因此长度为1。
如果只有一个空格,请说“ AAA AAA”,则数组将具有两个元素“ AAA”和“ AAA”。因此,长度将始终比令牌数大一。