java如何使用scanner来读取和计数段落

时间:2014-03-03 19:43:59

标签: java string paragraph

例如,如果文件中包含以下文本行:

  

这是一个例子。这是一个例子。

     

这是一个例子。这是一个例子。这是一个例子

     

这是一个示例,这是一个示例,这是一个示例,这是一个示例,这是一个示例,这是一个示例,这是一个示例,这是一个示例,这是一个示例。

我希望能够将这些行计为3段。现在我的代码将其计为4段,因为它不知道段落何时开始和结束。

Scanner file = new Scanner(new FileInputStream("../.../output.txt"));
int count = 0;
while (file.hasNextLine()) { //whilst scanner has more lines
    Scanner s = new Scanner(file.nextLine());
    if(!file.hasNext()){
        break;
    }
    else{
        file.nextLine();
        count++;
    }
    s.close();
}
System.out.println("Number of paragraphs: "+ count);
file.close();

这是我到目前为止所拥有的。它读取文本行,并将每行视为单个段落。

我希望它将它们之间没有任何空行的文本行视为1段并计算文件中的所有段落。

2 个答案:

答案 0 :(得分:0)

如果您只想计算线数,扫描仪可能不是最佳选择。 BufferedReader可能更好。

    BufferedReader in = new BufferedReader(new FileReader("output.txt"));
    String line = in.readLine();
    int count = 0;
    StringBuilder paragraph = new StringBuilder();
    while (true) {
        if (line==null || line.trim().length() == 0) {
            count++;
            System.out.println("paragraph " + count + ":" + paragraph.toString());
            paragraph.setLength(0);
            if(line == null)
                break;
        } else {
            paragraph.append(" ");
            paragraph.append(line);
        }
        line = in.readLine();
    }
    in.close();
    System.out.println("Number of paragaphs: "+ count);    

答案 1 :(得分:0)

您将无法使用扫描仪查看空格或换行符。 nextLine()方法消除了\ n's。

您需要使用读取文件字节的类和方法,以便检测空格和换行符。

尝试使用read()的{​​{1}}方法。