拆分NSString保留引用的子串

时间:2011-06-24 17:04:28

标签: cocoa nsstring split quotes

我需要拆分一个用逗号分隔的字符串,同时保留任何带引号的子字符串(也可能有逗号)。

字符串示例:

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

返回:

  • 两个
  • “这是第三部分
  • 我想“

正确的结果(尊重引用的子串)应该是:

  • 两个
  • “这是第三部分,我想”

有没有合理的方法来做到这一点,而无需重新发明或重写引用感知的解析例程?

2 个答案:

答案 0 :(得分:2)

让我们以不同的方式思考这个问题。你所拥有的是一个逗号分隔的字符串,你想要字符串中的字段。

有一些代码:

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

答案 1 :(得分:0)

这是同一问题的C#答案。

C# Regex Split - commas outside quotes

您可以在Objective-C中使用相同的Regex

<{> NSString split Regex ,(?=(?:[^']*'[^']*')*[^']*$)