查找子字符串是否在字符串中
查找子字符串是否在字符串中
我有一个批处理文件,会提示用户提供用户名和密码。我试图检查密码是否包含用户名。我找到了这个例子,但似乎无法使其工作:
@setlocal enableextensions enabledelayedexpansion
@echo off
SET /P userName=%1
SET /P userPassword=%1
如果不是 x%userPassword:userName=%==x%userPassword% (
转到 创建用户
) 否则 (
转到 密码无效
)
我使用这些值来创建一个Windows用户账户:
:创建用户
net user %$userName% "%$userPassword%" /ADD /PASSWORDCHG:NO
WMIC USERACCOUNT WHERE "Name="%$userName%"" SET PasswordExpires=FALSE
:密码无效
ECHO 密码包含用户名
从上述内容中可以看出,出现了一个名为"Find if substring is in string"的问题。该问题的出现原因是需要判断一个字符串是否为另一个字符串的子串,并且在判断的同时还需要进行一些额外的条件限制。下面将给出解决该问题的方法。
首先,用户输入一个用户名和密码。然后,将用户名作为子串,在密码字符串中将该子串替换为空字符串。如果替换后的密码与原密码相同,说明用户名不是密码的子串,密码有效。否则,如果替换后的密码与原密码不同,说明用户名是密码的子串,密码无效。
需要注意的是,密码是区分大小写的,而字符串替换则不区分大小写。尽管将用户名放在密码中可能不是一个好主意,但如果用户名使用不同的大小写形式,可以减少一些风险。
另外,还有一个问题是要求密码至少包含7个字符,并且需要满足以下3个条件中的任意3个:1. 英文大写字母(A-Z);2. 英文小写字母(a-z);3. 十进制数字(0-9);4. 非字母字符(例如!、$、#、%)。
对于以上问题的解决方法,可以将其作为一个独立的问题进行提问,以便得到更好的回答。
总结起来,解决"Find if substring is in string"问题的方法是:将用户名作为子串,在密码字符串中将该子串替换为空字符串,然后判断替换后的密码是否与原密码相同,以确定用户名是否为密码的子串。同时,还需满足密码至少包含7个字符,并且需要满足上述3个条件中的任意3个。以上是该问题的解决方法。