Как удалить запятые из текстового файла?

#java #buffer

#java #буфер

Вопрос:

Я зашел так далеко, но, похоже, что buffer не будет принимать массивы, потому что сначала у меня было так

 while ((strLine = br.readLine()) != null)   
{
  // Print the content on the console
 // System.out.println (strLine);
   String Record = strLine;
  String delims = "[,]";
  String[] LineItem = Record.split(delims);

  //for (int i = 0; i < LineItem.length; i  )
      for (int i = 0; i == 7; i  )
  {
    System.out.print(LineItem[i]);
  }
  

теперь я заканчиваю на этом, потому что он читает, но не убирает запятые.

 import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileNotFoundException;
import java.io.IOException;

public class mainPro1test {
    public static void main(String[] args) {
        File file = new File("test.txt");
        StringBuffer contents = new StringBuffer();
        BufferedReader reader = null;

        try {
            reader = new BufferedReader(new FileReader("C:\2010_Transactions.txt"));
            String text = null;

            // repeat until all lines is read
            while ((text = reader.readLine()) != null) {

                String Record = text;
                String delims = "[,]";
                String[] LineItem = Record.split(delims);

                contents.append(text)
                    .append(System.getProperty(
                        "line.separator"));


            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (reader != null) {
                    reader.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        // show file contents here       
        System.out.println(contents.toString());
    }
}
  

о том, как это должно выглядеть

ввод

 Sell,400,IWM   ,7/6/2010,62.481125,24988.02,4.43
Sell,400,IWM   ,7/6/2010,62.51,24999.57,4.43
  

вывод

 Sell    400    IWM    7/6/2010    62.481125    24988.02    4.43
Sell    400    IWM    7/6/2010    62.51        24999.57    4.43
  

Комментарии:

1. Скобки должны быть отделены от запятых некоторым пробелом между ними?

Ответ №1:

Если вы хотите удалить запятые только из строки, вы можете использовать String.replaceAll(",",""); Если вы хотите заменить их пробелами, используйте String.replaceAll(","," ") :

 while ((text = reader.readLine()) != null) {
    contents.append(text.replaceAll(","," ");
}
  

Также в вашем коде вы, кажется, разделяете входные данные, но не используете результат этой операции.

Комментарии:

1. ввод Sell, 400,IWM,6/6/2010,62.481125,24988.02,4.43 Sell, 400,IWM,6/6/2010,62.51,24999.57,4.43 вывод Sell 400 IWM 7/6/2010 62.481125 24988.02 4.43 Sell 400 IWM 7/6/2010 62.51 24999.57 4.43

Ответ №2:

Проще всего определить новый, InputStream который просто удаляет запятые…

 class CommaRemovingStream extends InputStream {
  private final InputStream underlyingStream;

  // Constructor

  @Override public int read() throws IOException {
    int next;

    while (true) {
      next = underlyingStream.read();
      if (next != ',') {
        return next;
      }
    }
  }
}
  

Теперь вы можете прочитать файл без запятых:

 InputStream noCommasStream = new CommaRemovingStream(new FileInputStream(file));
  

Комментарии:

1. Вы можете избавиться от первой проверки на next == -1 . Это было бы обработано в next != ',' .