【问题标题】:Extract text from a NSString using regular expressions使用正则表达式从 NSString 中提取文本
【发布时间】:2011-11-15 11:08:20
【问题描述】:

我有一个这种格式的 NSString:

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

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

Key1、Key2、Key3 等

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

您知道使用正则表达式的方法吗?

【问题讨论】:

    标签: ios regex nsstring nsregularexpression


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的回答。键和值都可以包含字母、数字、空格和标点符号(逗号除外),例如:“Storia; Storia dell'Arte”是一个有效的键。
    • 那么它就变得更复杂了,如果规则是它们必须包含在不太难的引号中,但如果引号可以包含转义引号,它变得更加困难:)
    • 我可以让我的工作伙伴在引号内生成键和值。
    • 如果您可以使用原始格式,那么您可能应该尝试获取已经分离的键和值,例如在 XML 文件中。
    • 是的,本来我是在一个plist文件上想的,可惜我的小伙伴明确表示我不能问这么多……但是,有没有可能用你的代码来处理像这样的字符串这个:"Key1"-"Value1","Key2"-"Value2",...?
    猜你喜欢
    • 2017-10-08
    • 1970-01-01
    • 2011-05-20
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多