Java:删除以csv开头的文本 -

时间:2014-03-12 10:27:13

标签: java parsing csv match

我正在加载一个csv文件并保持活动而不关闭BufferReader。现在我想删除以 - 开头的所有行 - 并将csv保存在临时CSV中。任何人都知道如何才能做到这一点只找到c#代码。 我尝试用正则表达式修复但是我失败了。 csv的一个例子:

-- DDL- "T453453   "."BMG"
-- DDL- "T423342   "."BMG234"

CREATE TABLE "T453453   "."BMG"  

-- DDL- "T42234234   "."BMG236"

所以它有效,但我有最后一个问题,我如何添加\ n(换行符)原因如果我调试此代码我得到一行文本。

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.file.Files;
import java.nio.file.Paths;

public class CsV {
    public static String Read() throws IOException{
        return new String(Files.readAllBytes(Paths.get("C://Users//myd//Desktop//BW//BWFormated.csv")));
        }
    public static void main(String[] args) throws IOException {
        File inputFile = new File("C://Users//myd//Desktop//BW//BWtest.csv");
        File tempFile = new File("C://Users//myd//Desktop//BW//BWFormated.csv");


        BufferedReader reader = new BufferedReader(new FileReader(inputFile));
        BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));

        String lineToRemove = "--";
        String currentLine;

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

            String trimmedLine = currentLine.trim();
            if(trimmedLine.startsWith(lineToRemove)) continue;
            writer.write(currentLine);
        }
        writer.close();
        boolean successful = tempFile.renameTo(inputFile);
        System.out.println(Read());

    }
}

1 个答案:

答案 0 :(得分:2)

您可以使用String.startsWith()方法检查每一行是否以--开头。

如果是这样,请阅读下一行,如果该行包含您想要制作其他内容的内容,则可以将其放入列表中。也许是这样的:

String line;
List<String> list = new ArrayList<String>();
while((line = reader.readLine()) != null)
{
    if(line.startsWith("--"))
        continue;
    list.add(line);
}

for(int i = 0; i < list.length; i++)
{
    line = list.get(i);
    // use regular expressions to extract the data you want to convert into CSV format
}

提示:我没有检查我的语法,所以它可能是,它不会被编译; - )

使用the Pattern class表示正则表达式,this tutorial可能会对您有帮助。

祝你好运!

修改

将while循环扩展为以下内容,允许您添加新行:

while((currentLine = reader.readLine()) != null) {
    String trimmedLine = currentLine.trim();
    if(trimmedLine.startsWith(lineToRemove))
        continue;
    writer.write(currentLine);
    writer.newLine(); // Writes a line separator.
}

Read the docsnewLine()方法。