本文来自 海之飞燕 http://v2it.win/?p=617
最近几天在写pin code和指纹登录功能,一直没有时间总结技术,今天终于有点时间了。
我们的pin code的规则如下图所示:
先说一下我对这个问题的解决思路:
- 我们先进行判重,怎么进行判重呢,首先我们需要把字符串中的数字切割成单独的数字,放入到数组中,这样你是不是有点思路了呢?我们可以利用for循环,用数组中的第一个元素和其他元素一一进行比较,如果有不相等的说明这个字符串的数字是不相同的。
2. 再判断数字是否连续的,这个需要我们分成两部分来判断:递增连续、递减连续。
2.1 判断递增连续,我们可以利用for循环进行操作,如果i>0在里面对arr[i]和arr[i-1] + 1 进行判断是否相等,如果有一次不相等,就说明这个字符串不是连续递增的。判断递减也可以依同样的方式进行解决。
2.2 判断递减连续,利用for循环进行操作,如果i>0在里面对arr[i]和arr[i-1] - 1 进行判断是否相等,如果有一次不相等,就说明这个字符串不是连续递减的。
第一种方法,使用一个临时int变量j,来判断比较了多少次,如果比较了arr.count - 1次,就能说明全部比较完成了。
+(BOOL)checkPincode:(NSString*)pincode
{
BOOL isTure = NO;//不符合规则,pincode是相同的或连续的
NSString *pincodeRegex = @"^(?=.*\\d+)(?!.*?([\\d])\\1{4})[\\d]{5}$";
NSPredicate *pincodePredicate = [NSPredicate