help!!我想将一行分成一组,如下例所示
"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
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(标题)本身包含逗号读取是错误的
最佳答案
这看起来像逗号分隔值数据,那么为什么不使用 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
关于java - 如何使用 split() 来分割一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55941272/