STO 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",@"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