我正在做一个较大的小组项目的一小部分。在此范围内,我将接收一个文本文件并将其转换为更易于压缩的文本文件。为此,我要降低所有大写字母的单词,并用空格(即“”)替换标点符号。我感谢所有评论和建议。

import java.io.*;
public class Formatter
{

    public static void main (String[] args) throws IOException
    {
        String nonChar = ".,:;!@#$%^&*()_-=+[]\"'<>";
        File f1 = new File("iTest.txt");
        File f2 = new File("oTest.txt");
        BufferedReader in = (new BufferedReader(new FileReader(f1)));
        PrintWriter out = (new PrintWriter(new FileWriter(f2)));

        int ch;
        while ((ch = in.read()) != -1)
        {
            if (Character.isUpperCase(ch))
            {
                ch = Character.toLowerCase(ch);
            }
            else if (in.contains(Character[ch]))//tried character
            {
                ch = ' ';
            }
            out.write(ch);
        }

        in.close();
        out.close();

    }
}


理想情况下,如果给出

彼得·派珀(Peter Piper)采摘了一批腌制的辣椒;
彼得·派珀(Peter Piper)采摘了一小撮腌辣椒
如果彼得·派珀(Peter Piper)采摘了一批腌制辣椒,
彼得·派珀(Peter Piper)采摘的腌制辣椒在哪里?


它会回来

彼得·派珀(Piper Piper)摘了几只泡椒
一小撮腌胡椒彼得·派珀
如果彼得吹笛者采摘了几只腌制的辣椒
啄胡椒的啄胡椒在哪里采摘

最佳答案

String逐行读取并执行以下操作:

BufferedReader in = (new BufferedReader(new FileReader(f1)));
String line;
String processedLine="";
while ((line = in.readLine()) != null) {
    processedLine = line.replaceAll("[^a-zA-Z0-9]"," ").toLowerCase().replaceAll("( )+", " ");
    out.write(processedLine);
    out.write(System.getProperty("line.separator"));
}


注意:如果文本包含某些独特字符(带重音符号的字符),例如line.replaceAll("(?U)[^\\p{Alnum}]"," ")等,则可以使用é

10-07 23:37