扫描字符串中的连续数字

给NSString写个分类

扫描字符串中的连续数字。每扫描完成一段数字,就回调一次。

@interface NSString (JXScanConsecutiveNumber)

- (void)jx_scanConsecutiveNumberWithCallback:(void (^)(NSString *numberString, NSRange range, BOOL isLast, BOOL *stop))callback;

@end

用法

分别测试字母和数字混合与不混合的几种情况

        NSString *string = @"Hello132634523-345336World65434223";
        NSLog(@"----- %@ -----", string);
        [string jx_scanConsecutiveNumberWithCallback:^(NSString *numberString, NSRange range, BOOL isLast, BOOL *stop) {
            NSLog(@"number:%@, range:%@, isLast:%@", numberString, NSStringFromRange(range), isLast ? @"YES" : @"NO");
        }];
        
        // test2
        string = @"hello88kkk666ooo";
        NSLog(@"----- %@ -----", string);
        [string jx_scanConsecutiveNumberWithCallback:^(NSString *numberString, NSRange range, BOOL isLast, BOOL *stop) {
            NSLog(@"number:%@, range:%@, isLast:%@", numberString, NSStringFromRange(range), isLast ? @"YES" : @"NO");
            if ([numberString isEqualToString:@"88"]) {
                // 中断扫描
                *stop = YES;
                NSLog(@"中断扫描");
            }
        }];
        
        // test3
        string = @"834053450";
        NSLog(@"----- %@ -----", string);
        [string jx_scanConsecutiveNumberWithCallback:^(NSString *numberString, NSRange range, BOOL isLast, BOOL *stop) {
            NSLog(@"number:%@, range:%@, isLast:%@", numberString, NSStringFromRange(range), isLast ? @"YES" : @"NO");
        }];
        
        // test4
        string = @"12345Hello";
        NSLog(@"----- %@ -----", string);
        [string jx_scanConsecutiveNumberWithCallback:^(NSString *numberString, NSRange range, BOOL isLast, BOOL *stop) {
            NSLog(@"number:%@, range:%@, isLast:%@", numberString, NSStringFromRange(range), isLast ? @"YES" : @"NO");
        }];

输出

----- Hello132634523-345336World65434223 -----
number:132634523, range:{5, 9}, isLast:NO
number:345336, range:{15, 6}, isLast:NO
number:65434223, range:{26, 8}, isLast:YES
----- hello88kkk666ooo -----
number:88, range:{5, 2}, isLast:NO
中断扫描
----- 834053450 -----
number:834053450, range:{0, 9}, isLast:YES
----- 12345Hello -----
number:12345, range:{0, 5}, isLast:NO

源码

https://github.com/JiongXing/JXScanConsecutiveNumber

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容