我想只从以下字符串中提取名称
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 )
如果您仍想在上面的字符串中删除@符号,则可以随时替换任何字符串中的特殊字符,以进行检查
如果您需要进一步的帮助,可以随时发表评论
NSMutableArray* nameArray = [[NSMutableArray alloc] init]; NSArray* youarArray = [yourString componentsSeparatedByString:@" "]; for(NSString * nString in youarArray) { NSArray* splitObj = [nString componentsSeparatedByString:@"!"]; [nameArray addObject:[splitObj[0]]]; } NSLog(@"%@", nameArray);
您可以在没有正则表达式的情况下执行此操作(假设!符号在您的所有单词中都有统一的模式),
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 )
如果您仍想在上面的字符串中删除@符号,则可以随时替换任何字符串中的特殊字符,以进行检查
如果您需要进一步的帮助,可以随时发表评论