help !!我要像下面的示例一样将一行分成一组
“ http://data.doremus.org/performance/aa692091-a77c-3ef4-ba47-e1f9596d7b0c”,“ Solistes d'aujourd'hui,de solistes demain-Festival deJérusalem,Elena Bashkirova”,2009-01-09
int i=0;
while ((CurrentLine = reader1.readLine()) != null) {
String[] tokens = CurrentLine.split("\",");
fichier1[i][0] =tokens[tokens.length-1].split("T"[0];//date
fichier1[i][1] =tokens[tokens.length-2];//titre
fichier1[i][2] =tokens[tokens.length-3];//URI
i++;
}
我使用了上面的代码,只是元素2(标题)本身包含逗号,这是错误的
答案 0 :(得分:4)
这看起来像逗号分隔值数据,那么为什么不使用CSV解析器呢?使用http://opencsv.sourceforge.net/,您的代码如下所示:
String data = "\"http://data.doremus.org/performance/aa692091-a77c-3ef4-ba47-e1f9596d7b0c\",\"Solistes d'aujourd'hui, solistes de demain - Festival de Jérusalem, Elena Bashkirova\",2009-01-09";
CSVParser parser = new CSVParserBuilder().build();
String[] tokens = parser.parseLine(data);
for (String token : tokens){
System.out.println("token = "+token);
}
输出:
token = http://data.doremus.org/performance/aa692091-a77c-3ef4-ba47-e1f9596d7b0c
token = Solistes d'aujourd'hui, solistes de demain - Festival de Jérusalem, Elena Bashkirova
token = 2009-01-09
如果您不想使用外部库,在这种情况下,最简单的解决方案之一是 ,而不是寻找分割位置,而是寻找您感兴趣的部分,例如
例如:
String data = "\"http://data.doremus.org/performance/aa692091-a77c-3ef4-ba47-e1f9596d7b0c\",\"Solistes d'aujourd'hui, solistes de demain - Festival de Jérusalem, Elena Bashkirova\",2009-01-09";
Pattern p = Pattern.compile("\"[^\"]+\"|[^,]+");
Matcher m = p.matcher(data);
while(m.find()){
System.out.println("token = "+m.group());
}
输出:
token = "http://data.doremus.org/performance/aa692091-a77c-3ef4-ba47-e1f9596d7b0c"
token = "Solistes d'aujourd'hui, solistes de demain - Festival de Jérusalem, Elena Bashkirova"
token = 2009-01-09