问题:上海市徐汇区桂林路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]); }
打印结果:可以直接解决实际问题
注意:数组自己判断一下长度
记得判断长度, 小心数组越界