Cle*_*rem 4 regex string objective-c ios
我想只从以下字符串中提取名称
bob!33@localhost @clement!17@localhost jack!03@localhost
Run Code Online (Sandbox Code Playgroud)
并创建一个数组[@"bob", @"clement", @"jack"].
我已经尝试过NSString,componentsseparatedbystring:但它没有按预期工作.所以我打算去regEx.
您可以在没有正则表达式的情况下执行此操作(假设!符号在您的所有单词中都有统一的模式),
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);
Run Code Online (Sandbox Code Playgroud)
以上NSLog的输出将是
(
bob,
"@clement",
jack
)
Run Code Online (Sandbox Code Playgroud)
如果您仍想在上面的字符串中删除@符号,则可以随时替换任何字符串中的特殊字符,以进行检查
如果您需要进一步的帮助,可以随时发表评论
NSMutableArray* nameArray = [[NSMutableArray alloc] init];
NSArray* youarArray = [yourString componentsSeparatedByString:@" "];
for(NSString * nString in youarArray) {
NSArray* splitObj = [nString componentsSeparatedByString:@"!"];
[nameArray addObject:[splitObj[0]]];
}
NSLog(@"%@", nameArray);
Run Code Online (Sandbox Code Playgroud)