java - 检查一个字符串是否有四个连续的字母升序或降序

标签 java regex string automata

美好的一天堆栈溢出。

我是使用正则表达式的新手,这是我的问题 - 如果密码包含 4 个连续字符,我需要检查密码。到目前为止,我刚刚介绍的是关于数字的内容。这是我的正则表达式:

升序数字 - ^.?(?:0123|1234|2345|3456|4567|5678|6789).$

降序数字 - ^.?(?:9876|8765|7654|6543|5432|4321|3210).$

这仅适用于数字。我知道这在正则表达式中已经是一种矫枉过正,所以我不想用字母来做。如果我那样做,那就太过分了。

abcdblah//因为有 abcd 而为真

helobcde//由于 bcde 而为真

dcbablah//真的因为 dcba

heloedcb//由于 edcb 而为真

任何帮助将不胜感激。感谢 stackoverflow。

最佳答案

答案很简单:不要使用正则表达式。

使用这种方法:

  • 遍历每个字母(当然,跳过最后的树字母)
    • 遍历接下来的三个字母并检查升序
      • 如果它们都在上升,则返回 true。
    • 遍历接下来的三个字母并检查降序
      • 如果它们都在下降,则返回 false。
  • 返回错误

在代码中,这看起来像这样(未经测试的代码):

public boolean checkForAscendingOrDescendingPart(String txt, int l)
{
    for (int i = 0; i <= txt.length() - l; ++i)
    {
        boolean success = true;
        char c = txt.charAt(i);
        for (int j = 1; j < l; ++j)
        {
            if (((char) c + j) != txt.charAt(i + j))
            {
                success = false;
                break;
            }
        }
        if (success) return true;

        success = true;

        for (int j = 1; j < l; ++j)
        {
            if (((char) c - j) != txt.charAt(i + j))
            {
                success = false;
                break;
            }
        }
        if (success) return true;
    }
    return false;
}

祝你好运!
计算器:)

关于java - 检查一个字符串是否有四个连续的字母升序或降序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12493931/

相关文章:

java - 这个java代码的解释是什么?

java - Twitter4j:在主题标签中搜索关键字

java - 如何将几个 "Sqrt[some text inside]"变成几个 Sqrt(里面有一些文字),我的意思是从 [] 变成 ()

java - 如何从主页(jsoup)获取特定数据,用于后面的if子句(Java,Eclipse)

python正则表达式查找外野手的名字

c# - 需要 RegEx 或其他方式来分隔包含转义引号的引用标记

javascript - 键入时搜索 - 突出显示匹配项

java - 如果用户为 Scanner 的 next() 输入两个单词,第二个单词将被传输到随后的 nextInt() 方法,从而导致 inputMismatchException

javascript - 尝试使用 jQuery 检索部分 URL;它有效,但未返回字符串

python - 字符串中的相邻字母