0

如何验证密码的顺序值?

例如 - 如果用户在密码中输入 1326 或“axdf”,那么它是有效的。

如果使用输入 1234 或 "abcd" 则无效。

4

4 回答 4

9

我认为你可以这样做

NSString *list= @"abcdefghijklmnopqrstuvwxyz"; 

NSString *password= @"abz";  // Suppose this is your password

NSRange range = [list rangeOfString:password options:NSCaseInsensitiveSearch];

 if (range.location == NSNotFound) {
    /* Could NOT find password in list, then it is valid */
   } 
 else {
  /* Found the password in the list then it is not valid */
  }

同样,您也可以对数字执行此操作

于 2013-05-22T09:22:08.217 回答
1

最简单的方法是使用 strpos。

$haystack = '01234567890';
function testConsecutive($pHaystack, $pNeedle){
  return strpos($pHaystack,$pNeedle) === false?false:true;
}

糟糕,我以为我在回答 php 代码,因为那是我的过滤器。这不是 php,对此感到抱歉。

于 2013-05-22T08:25:34.853 回答
1

在这种情况下,我建议您尝试匹配字符串中的ASCII值。each character如果字符串是连续的,ASCII则该字符的值应增加1

这是一个粗略的想法,您可以如何实现它,尚未对其进行测试,但希望它可能会有所帮助。

int prevAsciiCode;
NSString *string = @"12345";
for (int i = 0; i<string.length; i++) {
    int asciiCode = [string characterAtIndex:i];
    if (asciiCode == prevAsciiCode+1) {
        NSLog(@"String invalid");
        return;
    }
    prevAsciiCode = asciiCode;
}
于 2013-05-22T08:58:05.570 回答
0

字符串是一个字符序列,每个字符由 ASCII 码表示,因此您可以迭代 throw 字符串的字符并将每个字符与其之前的 int 值进行比较,例如:

- (BOOL)isSequence:(NSString *)string
{
    char previousChar = [string characterAtIndex:0];
    int wordLength = [string length];
    BOOL isSequence = YES;
    for (int i = 0; i < wordLength && isSequence; i++)
    {
        char currentChar = [string characterAtIndex:i];
        if (currentChar != previousChar+1) {
            isSequence = NO;
        }
        previousChar = currentChar;
    }

    return isSequence;
}
于 2013-05-22T09:09:20.660 回答