拆分 NSString 保留带引号的子字符串

发布于 2024-11-17 01:53:46 字数 459 浏览 1 评论 0原文

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

字符串示例:

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

这返回:

  • 一二
  • 我认为这是第三部分
  • 没有

合理

  • 方法
  • ”四正确的结果(尊重引用的子字符串)应该是:一二“我认为这是第三部分”四

做到这一点,没有重新发明或重写引号感知解析例程?

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 parsing routines?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

陌上青苔 2024-11-24 01:53:46

让我们换个方式来思考这个问题。您拥有的是一个以逗号分隔的字符串,并且您需要字符串中的字段。

有一些代码:

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

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);
  }
}
红墙和绿瓦 2024-11-24 01:53:46

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

C# 正则表达式拆分 - 引号外的逗号

您可能可以在 Objective-C 中使用相同的正则表达式

NSString 拆分正则表达式 ,(?=(?:[^']*'[^']*')*[^']*$)

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 ,(?=(?:[^']*'[^']*')*[^']*$)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文