这次,我无法为之前的post
创建if语句我正在尝试检查该值是否采用以下格式:^\d\d\.\d$
大多数时候,它会。但是,有时它不可用。
在其他脚本语言中,我可以管理它,但由于某些未知原因,我无法弄清楚如何批量处理它。
因此,它应该类似于:
if not findstr /R "^\d\d\.\d$" %newvalue%
set newvalue=
如果不是"^\d\d\.\d$"
,则将newvalue
设置为空白。只会在找不到newvalue
时将其留空,因为它将产生随机结果。
有人可以帮我吗?进行此if
语句的最佳方法是什么?
谢谢。
答案 0 :(得分:1)
LotPings发布的非常好的工作解决方案是:
- (NSUUID *)reportOutgoingCallContactIdentifier:(NSString *)identifier destination:(NSString *)name telNumber:(NSString *)telnum
我建议使用其他一些单线解决方案:
Echo:%newvalue%|findstr "^[0-9][0-9]\.[0-9]$" >Nul 2>&1 &&(echo matched pattern)||(echo didn't match pattern)
或者更容易阅读和处理分配给环境变量echo:%newvalue%|%SystemRoot%\System32\findstr.exe /R "^[0123456789][0123456789]\.[0123456789]$" >nul && (echo matched pattern) || (echo didn't match pattern)
的任何字符串值:
newvalue
在命令setlocal EnableExtensions EnableDelayedExpansion
echo:!newvalue!| %SystemRoot%\System32\findstr.exe /R "^[0123456789][0123456789]\.[0123456789]$" >nul
if errorlevel 1 (
echo Value does not match the regular expression pattern.
) else (
echo Value matches the regular expression pattern.
)
endlocal
和分配给环境变量echo
的字符串之间使用冒号代替空格,以避免该命令 ECHO 输出命令回显的当前状态。根本没有定义newvalue
的大小写。
最后一个解决方案使用delayed expansion来避免带有 ECHO 和 FINDSTR 的命令行不起作用,或者执行与以下命令完全不同的操作分配给变量newvalue
的字符串包含类似newvalue
的运算符。
重要的是,重定向操作符&<>|
上应留有空间,因为该空间会将命令 ECHO 的输出通过管道传递给命令 FINDSTR 作为输入字符 ECHO 也将输出,并且正则表达式find永远不会为正。如上例所示,对|
的空格权利并不重要。
FINDSTR 不支持|
作为任何数字的表示。必须在方括号中的自定义字符类中指定要匹配的字符。 FINDSTR 与\d
个字符[0-9]
匹配。必须使用0123456789¹²³
仅匹配字符[0123456789]
而不匹配0123456789
。
¹²³
表示任何字符,除了点用反斜杠转义以外,在这种情况下将其解释为文字字符。
默认情况下, FINDSTR 将.
中的搜索字符串解释为正则表达式字符串。但是我认为,最好使用"..."
或/L
使 FINDSTR 以及每个阅读器如何100%清晰地理解搜索字符串,作为文字或正则表达式字符串。
FINDSTR 会在搜索到的输入字符流上没有正向匹配时以值/R
退出,而在至少一个正向匹配时以1
退出。可以如上所述评估 FINDSTR 的退出代码,并在single line with multiple commands using Windows batch file中进行详细说明。
在正匹配项上的 FINDSTR 的输出没有意义,因此重定向到设备 NUL 对其进行抑制。
要了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并非常仔细地阅读每个命令显示的所有帮助页面。
0
echo /?
endlocal /?
findstr /?
if /?
另请参阅有关Using command redirection operators和DosTips论坛主题ECHO. FAILS to give text or blank line - Instead use ECHO/的Microsoft文章,原因是在setlocal /?
之后使用:
通常比在字符串输出上使用空格更好从文件读取或由用户输入。