美好的一天堆栈溢出。
我是使用正则表达式的新手,这是我的问题 - 如果密码包含 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/