как разделить строку с помощью split () - PullRequest
0 голосов
/ 01 мая 2019

помогите !! Я хочу разделить на группу строку, как в следующем примере

"http://data.doremus.org/performance/aa692091-a77c-3ef4-ba47-e1f9596d7b0c","Solistes d'aujourd'hui, solistes de demain - Festival de Jérusalem, Елена Башкирова", 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 (заголовок) содержит запятые. Чтение неверно

1 Ответ

4 голосов
/ 01 мая 2019

Это похоже на данные, разделенные запятыми, так почему бы не использовать для них 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
...