目标C中的正则表达式

 关注丑开 发布于 2023-02-06 12:49

我想只从以下字符串中提取名称

bob!33@localhost @clement!17@localhost jack!03@localhost

并创建一个数组[@"bob", @"clement", @"jack"].

我已经尝试过NSString,componentsseparatedbystring:但它没有按预期工作.所以我打算去regEx.

    如何在范围之间提取字符串并使用目标C中的regEx将其添加到数组中?

    初始字符串可能包含500多个名称,如果我使用regEx操作字符串会不会出现性能问题?

Janak Nirmal.. 5

您可以在没有正则表达式的情况下执行此操作(假设!符号在您的所有单词中都有统一的模式),

NSString *names = @"bob!33@localhost @clement!17@localhost jack!03@localhost";
NSArray *namesarray = [names componentsSeparatedByString:@" "];
NSMutableArray *desiredArray = [[NSMutableArray alloc] initWithCapacity:0];
[namesarray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    NSRange rangeofsign = [(NSString*)obj rangeOfString:@"!"];
    NSString *extractedName = [(NSString*)obj substringToIndex:rangeofsign.location];
    [desiredArray addObject:extractedName];
}];
NSLog(@"%@",desiredArray);

以上NSLog的输出将是

(
    bob,
    "@clement",
    jack
)

如果您仍想在上面的字符串中删除@符号,则可以随时替换任何字符串中的特殊字符,以进行检查

如果您需要进一步的帮助,可以随时发表评论

2 个回答
  • NSMutableArray* nameArray = [[NSMutableArray alloc] init];
    NSArray* youarArray = [yourString componentsSeparatedByString:@" "];
    for(NSString * nString in youarArray) {
       NSArray* splitObj = [nString componentsSeparatedByString:@"!"];
       [nameArray addObject:[splitObj[0]]];
    }    
    NSLog(@"%@", nameArray);
    

    2023-02-06 12:52 回答
  • 您可以在没有正则表达式的情况下执行此操作(假设!符号在您的所有单词中都有统一的模式),

    NSString *names = @"bob!33@localhost @clement!17@localhost jack!03@localhost";
    NSArray *namesarray = [names componentsSeparatedByString:@" "];
    NSMutableArray *desiredArray = [[NSMutableArray alloc] initWithCapacity:0];
    [namesarray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        NSRange rangeofsign = [(NSString*)obj rangeOfString:@"!"];
        NSString *extractedName = [(NSString*)obj substringToIndex:rangeofsign.location];
        [desiredArray addObject:extractedName];
    }];
    NSLog(@"%@",desiredArray);
    

    以上NSLog的输出将是

    (
        bob,
        "@clement",
        jack
    )
    

    如果您仍想在上面的字符串中删除@符号,则可以随时替换任何字符串中的特殊字符,以进行检查

    如果您需要进一步的帮助,可以随时发表评论

    2023-02-06 12:53 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有