csv行中的多个部分

时间:2017-05-28 12:28:44

标签: java csv

我有一个格式化的csv文件

<F,Bird,20,10/> < A,Fish,5,11,2/>

我想知道如何分别读取这些值。

我是否必须将整行放到数组中?

我曾考虑过line.split("/>"),但第一个数据中会有<,我不想要。

另一方面,如果我只是使用line.split(",")分隔它,然后相应地分配每个值,中间的值将合并,这样既不起作用。

有没有办法在不使用<>/符号的情况下首先分隔字符串?

2 个答案:

答案 0 :(得分:0)

尝试使用lookbehind ?<=/>

拆分输入字符串
String input = "<F,Bird,20,10/> < A,Fish,5,11,2/>";
input = input.replaceAll("\\s+", "");
String[] parts = input.split("(?<=/>)");
for (String part : parts) {
    System.out.println(part.replaceAll("[<>/]", ""));
}

请注意,我删除了字符串中的所有空格以使分割更清晰。我们仍然可以尝试用任意空格分割,但这将是更多的工作。从这一点开始,您可以轻松访问每个标记中包含的CSV数据。

<强>输出:

F,Bird,20,10
A,Fish,5,11,2

在这里演示:

Rextester

答案 1 :(得分:0)

您可以在split regexp中使用多个分隔符,如下所示:

String line = "<F,Bird,20,10/> < A,Fish,5,11,2/>";
String[] lines = line.split("<|/> <|/>");
for (String item: lines) {
    System.out.println(item);
}

输出(包含所有空格):

F,Bird,20,10
 A,Fish,5,11,2