我有一根这样的绳子:
$string = "Test file.cs file.sql file.xml"
我想检查字符串是否包含带有.sql
的文件,而不包含带有.cs
和许多其他文件扩展名的文件。
到目前为止,我有一个很长的脚本来检查它:
if($string.Contains(".sql") -and (!$string.Contains(".cs") -or (!$string.Contains(".js")))) # and more....
有什么简单的方法吗?
类似于:
$ext = "cs,css,js,xml"
if(!$string.Cotnains($ext))
发布于 2019-07-31 05:14:50
我建议你在这里说:
$exts= '\.(cs|css|js|xml)'
$string = 'Test file.cs file.sql file.xml'
$string -notmatch $extensions
发布于 2019-07-31 05:10:21
也许我理解错了这个问题,但是您可能需要这样看待-in
操作符:
$string = "Test file.cs file.sql file.xml"
$extensions = "cs", "css", "js", "xml"
if ($string -in $extensions) {
"$string not in ext"
} else {
"$string in ext"
}
发布于 2019-07-31 06:06:39
有价值的TheIncorrigible1's answer的替代方案
$extsContain = '\.(sql)\b'
$extsRefused = '\.(cs|css|js|xml)\b'
$strings = 'Test1 file.cs file.sql file.xm',
'Test2 file.ces file.qls file.yml',
'Test3 file.csa file.sql file.xml',
'Test4 file.csa file.sql file.pxml',
'Test5 file.csa file.rql file.axml'
@($strings) -match $extsContain -notmatch $extsRefused
输出
D:\PShell\SO\57291315.ps1
Test4 file.csa file.sql file.pxml
https://stackoverflow.com/questions/57291315
复制相似问题