java - 如何不计算文本文件中的控制字符

标签 java text io java.util.scanner delimiter

我无法理解如何不计算文本文件中的控制字符。我的程序除了跳过控制字符 \n\r 之外什么都做: 文件内容:好的,进一步尝试后我更接近了。如果我改变:

 while (input.hasNext()) { 
          String line = input.nextLine();
          lineCount++;
          wordCount += countWords(line);
          charcount += line.length(); 
 to
 while (input.hasNext()) {
          String line = input.next();
          lineCount++;
          wordCount += countWords(line);
          charCount += line.replace("\n", "").replace("\r", "").length();

字符被计算在内,但它弄乱了行。如果我添加 input.nextLine 它会弄乱字符。 文本文件内容:

悲伤的狗
狗摇

import java.io.*;
import java.util.*;

public class Character_count {

 public static void main(String args[]) throws Exception {

     java.io.File file = new java.io.File("textFile.txt");

        // Create a Scanner for the file
        Scanner input = new Scanner(file);
        int charcount = 0;
        int wordCount = 0;
        int lineCount = 0;

        while (input.hasNext()) {
          String line = input.nextLine();
          lineCount++;
          wordCount += countWords(line);
          charcount += line.length();
        }


        System.out.println("The file " + file + " has ");
        System.out.println(charcount + " characters");
        System.out.println(wordCount + " words");
        System.out.println(lineCount + " lines");

        }

    private static int countWords(String s) {
        Scanner input = new Scanner(s);
            int count = 0;

        while (input.hasNext()) {
            input.next(); 
        count++;
        }
        return count;

  }
}

最佳答案

您可以像这样用空字符串替换所有的 \n\r:

line = line.replaceAll("\\r?\\n", "")

现在您可以进行计数,它不会考虑任何 \n\r

您也可以这样做(不使用正则表达式):

line = line.replace("\n", "").replace("\r", "")

关于java - 如何不计算文本文件中的控制字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35779745/

相关文章:

java - 从 jtable 更新 jtextfield

java - List<View> 值得吗?

java - 如何通过纯 Java 使用 P2D、P3D、FX2D?

css - 在 IE8 中颜色透明?

java - 有没有一种有效的方法来 "crop"一个文件(从尾部删除 x 个字节)?

java - 用Java计算两个日期之间的天数

python - 将 WordNetLemmatizer.lemmatize() 与 pos_tags 一起使用会引发 KeyError

Android 9 应用程序菜单是深色背景上的深色文本

haskell - foldl 和 IO 值

C系统调用I/O与sscanf实践