我正在做一个较大的小组项目的一小部分。在此范围内,我将接收一个文本文件并将其转换为更易于压缩的文本文件。为此,我要降低所有大写字母的单词,并用空格(即“”)替换标点符号。我感谢所有评论和建议。
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}]"," ")
等,则可以使用é