开发者

Split NSString preserving quoted substrings

I need to split up a string which is separated by commas while preserving any quoted substrings (which may have commas too).

String example:

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

This returns:

  • One
  • Two
  • "This is part three
  • I think"
  • Four

The correct result (respecting quoted substrings) should be:

  • One
  • Two
  • "This is part three, I think"
  • Four

Is there a reasonable way to do this, without re-inventing or re-writing quote-aware par开发者_C百科sing routines?


Let's think about this a different way. What you have is a comma-seperated string, and you want the fields in the string.

There's some code for that:

https://github.com/davedelong/CHCSVParser

And you'd do this:

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);
  }
}


Here is a C# answer to the same problem.

C# Regex Split - commas outside quotes

You could probably use the same Regex in Objective-C

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

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜