iOS正则表达式解决实际问题

问题:上海市徐汇区桂林路158号1202室

字符串长度不固定,数字长度也不固定。截取第二组数字。

方法一:【正则表达式】

NSString * str = @"上海市徐汇区桂林路158号1202室";

    NSCharacterSet *nonDigitCharacterSet = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];

    //获取字符串中的数字

//    str = [[str componentsSeparatedByCharactersInSet:nonDigitCharacterSet] componentsJoinedByString:@""];

    NSArray *strArr = [str componentsSeparatedByCharactersInSet:nonDigitCharacterSet];

//    NSArray *strArr = [str componentsSeparatedByString:@""];

    NSLog(@"%@",strArr);

打印结果:需要自己取想要的那一组数字,适用范围广

方法二:【正则表达式】

    NSString *searchText = @"满29元减500元";
    NSError *error = NULL;
    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\d+" options:NSRegularExpressionCaseInsensitive error:&error];
    NSArray <NSTextCheckingResult *> *results = [regex matchesInString:searchText options:0 range:NSMakeRange(0, [searchText length])];
    if (results) {
        NSLog(@"%@", [searchText substringWithRange:results[1].range]);
    }

打印结果:可以直接解决实际问题

注意:数组自己判断一下长度

         记得判断长度, 小心数组越界

原文地址:https://www.cnblogs.com/liuzhi20101016/p/11934009.html