从文本文件中删除所有ASCII字符

时间:2017-07-18 22:25:19

标签: java ascii

我正在研究一种名为Malyalam的语言,我正在尝试用最常用的单词制作一个单词频率图表。但是,我的文件中包含特殊字符和字母表。我只想删除这些文本文件。但是我遇到了很多麻烦。我对编程很新,我无法弄清楚。有人可以帮忙吗?

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;     
import java.io.FileWriter;
import java.io.IOException;          
import java.io.Reader;

public class Delete {

    public static void replaceInFile(File file) throws IOException {

        File tempFile = File.createTempFile("buffer", ".tmp");
        FileWriter fw = new FileWriter(tempFile);

        Reader fr = new FileReader(file);
        BufferedReader br = new BufferedReader(fr);

        while(br.ready()) {
            fw.write(br.readLine().replaceAll("<", ""));
        }

        fw.close();
        br.close();
        fr.close();

        tempFile.renameTo(file);
    }
    public static void main(String[] args) throws IOException

    {
        File jyothis = null;
        replaceInFile(jyothis);
    }
}

1 个答案:

答案 0 :(得分:1)

如果您想查找MALAYALAM Script中的字符序列,可以使用正则表达式\p{IsMalayalam}

您还可以使用正则表达式MALAYALAM Block\p{InMalayalam}中选择查找字符。不确定是否确实存在差异。

要消除所有非马拉雅拉姆语字符,您需要保留空格,以保持马拉雅拉姆语字符的序列分开。如果马拉雅拉姆语字符仅由空格以外的非马拉雅拉姆语字符分隔,则您可能希望用空格替换它们。

为了获得更好的效果,您不想在循环中使用String.replaceAll(),所以您可以这样做:

File tempFile = File.createTempFile("buffer", ".tmp");
try (PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(tempFile)));
     BufferedReader in = new BufferedReader(new FileReader(file))) {

    Pattern p = Pattern.compile("\\p{IsMalayalam}+");
    StringBuilder buf = new StringBuilder();
    for (String line; (line = in.readLine()) != null; ) {
        buf.setLength(0);
        for (Matcher m = p.matcher(line); m.find(); ) {
            if (buf.length() != 0)
                buf.append(' ');
            buf.append(m.group());
        }
        if (buf.length() != 0)
            out.println(buf);
    }
}

对于更简单的实现,您可以这样做(注意在正则表达式中使用大写P):

File tempFile = File.createTempFile("buffer", ".tmp");
try (PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(tempFile)));
     BufferedReader in = new BufferedReader(new FileReader(file))) {

    Pattern p = Pattern.compile("\\P{IsMalayalam}+");
    for (String line; (line = in.readLine()) != null; )
        out.println(p.matcher(line).replaceAll(" ").trim());
}