Ios 仅从给定字符串中检索正整数

Ios 仅从给定字符串中检索正整数,ios,objective-c,nscharacterset,Ios,Objective C,Nscharacterset,我有以下实现,其中,comboKey是我试图检索整数的字符串 例如,如果组合键为2m1s,然后返回@[@“2”,“1”];这是完美的 如果comboKey为0m2s,则返回@[@“0”,“2”],但是我不希望使用0。我只想要正数@[@“2”] 你犯了一点小错误。在谓词中,检查字符串长度而不是值。只需像这样更改谓词“integerValue>0”您的代码将产生预期的结果。下面是另一种方法,使用正则表达式 NSRegularExpression * exp = [[NSRegularExpressi

我有以下实现,其中,
comboKey
是我试图检索整数的字符串

例如,如果组合键
2m1s
,然后返回
@[@“2”,“1”]
;这是完美的

如果
comboKey
0m2s
,则返回
@[@“0”,“2”],但是我不希望使用
0
。我只想要正数
@[@“2”]


你犯了一点小错误。在谓词中,检查字符串长度而不是值。只需像这样更改谓词“integerValue>0”
您的代码将产生预期的结果。

下面是另一种方法,使用正则表达式

NSRegularExpression * exp = [[NSRegularExpression alloc]initWithPattern:@"([1-9]([0-9])*)+" options:NSRegularExpressionDotMatchesLineSeparators error:nil];
NSString * text = @"80m254s";
NSMutableArray *resultArray = [NSMutableArray array];
[exp enumerateMatchesInString:text options:NSMatchingWithoutAnchoringBounds range:NSMakeRange(0, text.length) usingBlock:^(NSTextCheckingResult * _Nullable result, NSMatchingFlags flags, BOOL * _Nonnull stop) {
    [resultArray addObject:[text substringWithRange:[result range]]];
}];


NSLog(@"%@",resultArray);
对于
@“0m2s”

2017-07-15 22:31:18.576397 Regextesting项目[21823:1942182]( (二)

对于
@“80m254s”

2017-07-15 22:33:50.378485 RegexTestingProject[21826:1942829]( 80, (254)

对于
@“080m254s”

2017-07-15 22:35:40.760626注册测试项目[21828:1943403]( 80, (254)


希望这能帮助你对这个字符串@ 80M254S“知道什么?你应该返回什么方法?它会返回80和254,我用字符串作为分隔符。我在路上回家的路上,我将在30-40分钟内测试它。我已经投票了,一旦我检查然后标记为答案。可以吗?@hoststring如果解决了你的问题,我很乐意帮助你,最好的建议@hoststring我会复习一下的@Reinier Melian
NSRegularExpression * exp = [[NSRegularExpression alloc]initWithPattern:@"([1-9]([0-9])*)+" options:NSRegularExpressionDotMatchesLineSeparators error:nil];
NSString * text = @"80m254s";
NSMutableArray *resultArray = [NSMutableArray array];
[exp enumerateMatchesInString:text options:NSMatchingWithoutAnchoringBounds range:NSMakeRange(0, text.length) usingBlock:^(NSTextCheckingResult * _Nullable result, NSMatchingFlags flags, BOOL * _Nonnull stop) {
    [resultArray addObject:[text substringWithRange:[result range]]];
}];


NSLog(@"%@",resultArray);