我正在尝试从文件中读取和写入一些数据,并使用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”。因此,长度将始终比令牌数大一。

10-08 12:06