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);