Split NSString с сохранением указанных подстрок - PullRequest
1 голос
/ 24 июня 2011

Мне нужно разделить строку, разделенную запятыми, при сохранении любых заключенных в кавычки подстрок (которые также могут иметь запятые).

Пример строки:

NSString *str = @"One,Two,\"This is part three, I think\",Four";
for (id item in [str componentsSeparatedByString:@","])
    NSLog(@"%@", item);

Возвращает:

  • Один
  • Два
  • "Это третья часть
  • Я думаю"
  • Четыре

Правильный результат (с учетом указанных подстрок) должен быть:

  • Один
  • Два
  • "Это третья часть, я думаю"
  • Четыре

Есть ли разумный способ сделать это, не переизобретая или переписывая подпрограммы синтаксического анализа с учетом цитат?

Ответы [ 2 ]

2 голосов
/ 24 июня 2011

Давайте подумаем об этом по-другому.У вас есть строка, разделенная запятыми, и вам нужны поля в строке.

Для этого есть код:

https://github.com/davedelong/CHCSVParser

сделать это:

NSString *str = @"One,Two,\"This is part three, I think\",Four";
NSArray *lines = [str CSVComponents];
for (NSArray *line in lines) {
  for (NSString *field in line) {
    NSLog(@"field: %@", field);
  }
}
0 голосов
/ 24 июня 2011

Вот ответ C # на ту же проблему.

C # Regex Split - запятые вне кавычек

Возможно, вы могли бы использовать тот же Regex в Objective-C

NSString split Regex с ,(?=(?:[^']*'[^']*')*[^']*$)

...