申通 APP项目 单号规则
其实单号规则很容易写的 开始我也不太了解正则表达式 我只是看了一下安卓代码 然后写了个OC版本的 一次成功
全代码如下 就一个CodeMatches类
#import <Foundation/Foundation.h>
//单号规则
@interface CodeMatches : NSObject
+ (NSMutableArray *)startsWithFor12; //12位运单号 规则
+ (NSMutableArray *)startsWithFor13; //13位运单号 规则
+ (BOOL)matches:(NSString *)billcode;//传入运单号 进行规则对比 是否符合单号规则
+ (BOOL)matchesPackeg:(NSString *)pacCode; //传入集包单号 进行规则对比 是否符合单号规则
+ (BOOL )startWith:(NSString *)start billcode:(NSString *)billcode; //进行对比
@end
#import "CodeMatches.h"
@implementation CodeMatches
+ (BOOL)matches:(NSString *)billcode{
if(billcode == nil){
return NO;
}
if (![[NSPredicate predicateWithFormat:@"SELF MATCHES %@", @"\\d+"] evaluateWithObject:billcode] ) {
return NO;
}
BOOL matches = NO;
switch (billcode.length){
case 12:{
for(int i=0; i<[[CodeMatches startsWithFor12] count]; i++){
if([CodeMatches startWith:[CodeMatches startsWithFor12][i] billcode:billcode]){
matches = YES;
break;
}
}
break;
}
case 13:{
for(int i=0; i<[[CodeMatches startsWithFor13] count]; i++){
if([CodeMatches startWith:[CodeMatches startsWithFor13][i] billcode:billcode]){
matches = YES;
break;
}
}
break;
}
}
return matches;
}
+ (BOOL)matchesPackeg:(NSString *)pacCode{
if(pacCode == nil){
return NO;
}
if (![[NSPredicate predicateWithFormat:@"SELF MATCHES %@", @"\\d+"] evaluateWithObject:pacCode] ) {
return NO;
}
BOOL matches = NO;
switch (pacCode.length){
case 12:{
if ([[pacCode substringToIndex:3] isEqualToString:@"900"]) {
matches = YES;
}
break;
}
}
return matches;
}
+ (NSMutableArray *)startsWithFor12{
static NSMutableArray *array = nil;
if (array == nil) {
array = [NSMutableArray arrayWithObjects:@"268",@"368",@"468",@"568",@"768",@"868",@"968",@"40",@"588",@"688",@"888",@"11",@"22",@"41",@"42",@"43",@"44",@"45",@"46",@"47",@"48",@"49", nil];
}
return array;
}
+ (NSMutableArray *)startsWithFor13{
static NSMutableArray *array = nil;
if (array == nil) {
array = [NSMutableArray arrayWithObjects:@"33",@"55",@"45",@"660",@"661",@"662",@"663",@"664",@"665",@"666",@"667",@"669",@"77",@"880",@"881",@"882",@"883",@"884",@"885",@"886",@"887",@"889",@"99", nil];
}
return array;
}
- (NSString *)matches{
return @"\\d+";
}
+ (BOOL )startWith:(NSString *)start billcode:(NSString *)billcode{
if (start.length == 2) {
if([[billcode substringToIndex:2]isEqualToString:start]){
return YES;
}else{
return NO;
}
}
if (start.length == 3) {
if([[billcode substringToIndex:3]isEqualToString:start]){
return YES;
}else{
return NO;
}
}
return YES;
}
@end