假设我有一个名为$1的变量中包含一些文本。现在我想要检查$1是否包含特定的字符串。如果包含特定的字符串,我想要输出一个消息。打印不是问题,问题在于如何进行检查。你有什么想法吗?
假设有一个变量$str存储了要搜索的字符串,可以使用PHP的strpos()函数来检查变量$1是否包含该字符串。如果返回值大于或等于0,则表示字符串存在,否则不存在。以下是示例代码: ``` if (strpos($1, $str) !== false) { echo "消息"; } ```
假设我有一个名为$1的变量中包含一些文本。现在我想要检查$1是否包含特定的字符串。如果包含特定的字符串,我想要输出一个消息。打印不是问题,问题在于如何进行检查。你有什么想法吗?
假设有一个变量$str存储了要搜索的字符串,可以使用PHP的strpos()函数来检查变量$1是否包含该字符串。如果返回值大于或等于0,则表示字符串存在,否则不存在。我认为最简单的方法是这样的:
set YourString=This is a test
If NOT "%YourString%"=="%YourString:test=%" (
echo Yes
) else (
echo No
)
基本上冒号后面的字符串是你要查找的字符串,而且你在if语句之前使用not是因为% string:* %将从字符串中删除*,使它们不相等。
基本上冒号后面的字符串是你要查找的字符串,而且你在if语句之前使用not是因为%string:*%将从字符串中删除* ,使它们不相等。
abc
,并且你想要检查是否存在子字符串 b
,那么表达式是 not "abc"=="abc:b"
,它被计算为 not "abc"=="ac"
(true)。如果我们在同样的字符串中搜索 x
,我们有 not "abc"=="abc"
(false),因为 abc:x
不会替换任何符号。 - Dr.eelSET搜索和替换技巧在许多情况下都有效,但它不支持区分大小写或正则表达式搜索。
如果您需要区分大小写的搜索或有限的正则表达式支持,可以使用FINDSTR。
为避免转义特殊字符的复杂性,最好将搜索字符串放在变量中,并通过延迟扩展访问搜索和目标。
您可以使用ECHO命令将$1传输到FINDSTR命令中。如果$1未定义,请使用,并小心不要添加额外的空格。将在$1未定义时回显(或on),而将在未定义时回显一个空行。
FINDSTR会回显$1,如果它找到了搜索字符串-您不希望这样,因此要将输出重定向到nul。 FINDSTR将ERRORLEVEL设置为0,如果找到了搜索字符串,则为1,如果没有找到,则为1。这就是用于检查字符串是否被找到的内容。&&和||是一种方便的语法,用于测试匹配(ERRORLEVEL 0)或不匹配(ERRORLEVEL不是0)。
正则表达式支持非常基本,但仍然有用。
请参阅FINDSTR /?以获取更多信息。
此正则表达式示例将在字符串开头搜索$1的“BEGIN”,在中间任何位置搜索“MID”并在结尾处搜索“END”。默认情况下,搜索区分大小写。
set "search=^BEGIN.*MID.*END$"
setlocal enableDelayedExpansion
echo(!$1!|findstr /r /c:"!search!" >nul && (
echo FOUND
rem any commands can go here
) || (
echo NOT FOUND
rem any commands can go here
)
set "search=something"
),这是替换技巧所无法做到的。改进的地方是演示“仅在开头”、“仅在结尾”(我无法使其工作,但它们的用途较少)和“不区分大小写”(只需使用/i
开关)。 - undefinedset longString=the variable contating (or not containing) some text
@rem replace xxxxxx with the string you are looking for
set tempStr=%longString:xxxxxx=%
if "%longString%"=="%tempStr%" goto notFound
echo Substring found!
goto end
:notFound
echo Substring not found
:end
=
字符,且搜索字符串不能以 ~
或 *
开头。 - dbenham