如何从java中的输出中删除所有出现的“,”和“[”?

时间:2014-10-18 16:11:36

标签: java

这是我的代码。输入包含动漫(日本漫画)的名称,我将它存储在anime.txt的testfile中,我按字母顺序排列它们并将其写回另一个文件名animeout.txt。

输入文件不包含任何逗号或方括号,但输出文件包含它。

public class Main {

    public static  ArrayList<String> read(String filePath) throws IOException {

        ArrayList<String> names = new ArrayList<String>();

        BufferedReader reader = new BufferedReader(new FileReader(filePath));

        int numRead = 0;

        String line;

        while ((line = reader.readLine()) != null) {

            names.add(line + "\n");
            numRead++;
        }

        System.out.println("\n\n count " +numRead);
        reader.close();
        System.out.println(names);

        return  names;
    }

    public static void write(ArrayList<String> input) throws IOException
    {

文件文件=新文件(“Animeout.txt”);               file.createNewFile();

    FileWriter writer = new FileWriter(file);

    writer.write(input);

    writer.flush();
    writer.close();

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

        ArrayList<String> names2 = new ArrayList<String>();
        String path= "anime.txt";
        String test;

        names2 = read(path);

        Collections.sort(names2, null);
       // System.out.println(names2);
        write(names2);
    }
}

输入文件大约有200行。以下只是一个小例子

One piece
Naruto/naruto shippuden
Bleach
Fullmetal alchemist brotherhood
Fate/stay night
Fairy tale
Blue exorcist
Soul eater
Death note

输出文件包含,和[

    count 105
    [11 eyes
, A certain magical index
, A certain magical index II
, Aldnoah.Zero
, Angel beats!
, Another
, Asu no yoichi
, Bay blade
, Beelzebub
, Ben-To

3 个答案:

答案 0 :(得分:3)

String str = "[12,34,45]";
String out = str.replaceAll(",|\\[|\\]","");

输出:

123445

答案 1 :(得分:1)

为什么使用ObjectOuputStream?这适用于您希望序列化Java对象并在以后恢复它们的时候。我不明白为什么你需要它。

只需使用FileWriter,就像这样:

public static void write(ArrayList<String> input) throws IOException
{
   try
   {
      File file = new File("Animeout.txt");
      FileWriter fw = new FileWriter(file);

      for (int i = 0; i < input.size(); i++) {
         fw.append(input.get(i) + "\n");
      }
   }
   finally
   {
      try {
         if (fw != null)
            fw.close();
      }
      catch (Exception e) {
         // ignore
      }
   }
}

答案 2 :(得分:1)

您的write方法很不幸。尝试这样的事情(并在读取行时删除+ "\n"):

public static void write(ArrayList<String> lines) throws IOException
{
    File file = new File("Animeout.txt");
    PrintStream ps = null;
    try {
        ps = new PrintStream(file);
        for (final String line : lines) {
            ps.println(line);
        }
    } finally {
        if (ps != null) { ps.close(); }
    }
}

您使用的ObjectOutputStream不适合简单地编写文本行。

最后,如果您只想对文本文件的行进行排序,至少在POSIX系统上,您可以使用

进行排序。
$ sort anime.txt > Animeout.txt
从命令行