java - 如何使用 split() 来分割一行

标签 java regex split readline

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/

相关文章:

php - 如何在 PHP 中通过多个分隔符拆分字符串?

java - JLabel 位置在 Java 中不起作用

Java不显示矩形?

java - 如何在Spring Boot中创建RestTemplate的多个实例?

java - 如果用户登录,则显示/隐藏元素?

c# - 正则表达式长度验证 : Ignore leading and trailing whitespaces

regex - 如何通过正则表达式删除尾随评论?

java - 如何编写正则表达式以从 xpath 中删除所有索引?

sql - T-SQL 分割字符串

linux - 按列将分隔文件拆分为更小的文件