如何读取文本文件并将其 store/print 仅包含小写字母且没有空格发送到控制台?

How can I read a text file and store/print it to the console with only lowercase letters and no spaces?

我正在尝试接收一个文本文件 (UTF-8) 并 store/print 它具有以下限制(参见下面的示例):

  1. 只有字母,没有特殊字符 (a-z)
  2. 如果字母是大写,则转换为小写
  3. 字母之间没有空格或线条

我首先尝试使用扫描仪读取文件末尾。我将读取的字符串转换为 char 数组,但无法将其正确设置为小写(请参阅注释掉的代码)。我曾尝试使用 BufferedReader,但无法获得正确的更改。我尝试按字符读入并使用字符 class 设置小写限制(参见下面的代码)。

public static void OpenPlainText(File plainTextFile)
{
    try
    {
        Scanner scanner = new Scanner(plainTextFile);
        BufferedReader br = new BufferedReader(new InputStreamReader
                 (new FileInputStream (plainTextFile), Charset.forName("UTF-8")));
        StorePlainText(scanner, br);
        scanner.close();
        br.close();
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
}

public static void StorePlainText(Scanner scanner, BufferedReader br) throws IOException
{
    /*String str = "";
    while (scanner.hasNext())
    {
        str += scanner.next();
    }
        str.toCharArray();
        str.toLowerCase();
        System.out.println(str);*/
    int c;
    while ((c = br.read()) != -1)
    {
        char character = (char) c;
        if (Character.isLetter(character))
        {
            if (Character.isUpperCase(character))
            {
                Character.toLowerCase(character);
                System.out.print(character);
            }
        }
    }
}

例如。文本文件

计算机编程艺术,第 1 卷,第 1 册:MMIX -- 新千年的 RISC 计算机

这部关于算法分析的多卷本著作长期以来一直被认为是 class 计算机科学的权威描述。

例如。 Store/Print

artofcomputerprogrammingvolumefasciclethemmixarisccomputerforthenewmillenniumthismultivolumeworkontheanalysisofalgorithmshaslongbeenrecognizedasthedefinitivedescriptionofclassicalcomputerscience

Character.toLowerCase returns 小写字符它不会转换你传入的字符。

while ((c = br.read()) != -1)
{
    char character = (char) c;
    if (Character.isLetter(character))
    {
        if (Character.isUpperCase(character))
        {
            character = Character.toLowerCase(character);
            System.out.print(character);
        }
    }
}