使用正则表达式从 NSString 中提取文本

发布于 2024-12-04 10:31:06 字数 244 浏览 1 评论 0原文

我有一个这种格式的 NSString:

“Key1-Value1,Key2-Value2,Key3-Value3,...”

我只需要键(每个逗号后有一个空格):

Key1,Key2,Key3 等。

我想创建使用逗号作为分隔符的字符串中的组件数组,然后对于每个组件,提取自“-”以来的所有字符;然后我将序列化数组元素。但我担心这会对表演造成很大影响。

您知道使用正则表达式执行此操作的方法吗?

I have a NSString in this format:

"Key1-Value1,Key2-Value2,Key3-Value3,..."

I need only keys (with a space after every comma):

Key1, Key2, Key3, etc.

I thought to create an array of components from the string using the comma as separator, and after, for every component, extract all characters since the "-"; then I'd serialize the array elements. But I fear this could be very heavy about performances.

Do you know a way to do this using regular expressions?

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

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

发布评论

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

评论(1

岁吢 2024-12-11 10:31:06

正则表达式将在很大程度上取决于您正在使用的数据。例如,如果键或值允许全部是数字,或者允许包含空格和标点符号,则需要修改正则表达式。然而,对于您当前的示例,这将起作用。

NSString *example = @"Key1-Value1,Key2-Value2,Key3-Value3,...";
NSString *result = [example stringByReplacingOccurrencesOfString:@"(\\w+)-(\\w+),?" 
                                                      withString:@"$1, " 
                                                         options:NSRegularExpressionSearch
                                                           range:NSMakeRange(0, [example length])];
result = [result stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@", "]];
NSLog(@"%@", result);

The regex will greatly depend on the data you are using. For example if the key or value is allowed to be all numbers, or allowed to contain space and punctuation, you would need to modify the regex. For your current example however this will work.

NSString *example = @"Key1-Value1,Key2-Value2,Key3-Value3,...";
NSString *result = [example stringByReplacingOccurrencesOfString:@"(\\w+)-(\\w+),?" 
                                                      withString:@"$1, " 
                                                         options:NSRegularExpressionSearch
                                                           range:NSMakeRange(0, [example length])];
result = [result stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@", "]];
NSLog(@"%@", result);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文