我有一个NSString格式如下:
" Hello world 12正在寻找56"
我想找到由空格分隔的所有数字实例,并将它们放在NSArray中。我不想删除这些数字。
实现这一目标的最佳方法是什么?
答案 0 :(得分:2)
这是使用评论中建议的regular expression
的解决方案。
NSString *string = @"Hello world 12 looking for some 56";
NSRegularExpression *expression = [NSRegularExpression regularExpressionWithPattern:@"\\b\\d+" options:nil error:nil];
NSArray *matches = [expression matchesInString:string options:nil range:(NSMakeRange(0, string.length))];
NSMutableArray *result = [[NSMutableArray alloc] init];
for (NSTextCheckingResult *match in matches) {
[result addObject:[string substringWithRange:match.range]];
}
NSLog(@"%@", result);
答案 1 :(得分:0)
首先使用NSString的componentsSeparatedByString方法创建一个数组并引用this SO question。然后迭代数组并参考这个SO问题来检查数组元素是否为数字:Checking if NSString is Integer。
答案 2 :(得分:0)
根据字符串大小,我不知道你要执行此操作的位置,因为它可能不会很快(例如,如果它在表格单元格中调用它可能会不稳定)。
<强>代码:强>
+ (NSArray *)getNumbersFromString:(NSString *)str {
NSMutableArray *retVal = [NSMutableArray array];
NSCharacterSet *numericSet = [NSCharacterSet decimalDigitCharacterSet];
NSString *placeholder = @"";
unichar currentChar;
for (int i = [str length] - 1; i >= 0; i--) {
currentChar = [str characterAtIndex:i];
if ([numericSet characterIsMember:currentChar]) {
placeholder = [placeholder stringByAppendingString:
[NSString stringWithCharacters:¤tChar
length:[placeholder length]+1];
} else {
if ([placeholder length] > 0) [retVal addObject:[placeholder intValue]];
else placeholder = @"";
return [retVal copy];
}
要解释上面发生的事情,基本上就是我,
希望这有帮助请在需要时要求澄清