tnw*_*tnw 117 powershell operators
请考虑以下代码段:
"12-18" -Contains "-"
Run Code Online (Sandbox Code Playgroud)
你认为这会评估true,但事实并非如此.这将评估false相反.我不确定为什么会这样,但确实如此.
为避免这种情况,您可以使用此代码:
"12-18".Contains("-")
Run Code Online (Sandbox Code Playgroud)
现在表达式将评估为true.
为什么第一个代码片段的行为如此?有什么特别的东西-不能很好地搭配-Contains吗?该文档没有提及任何相关内容.
Kev*_*Kev 166
该-Contains运营商没有做串比较和匹配必须是一个完整的字符串,用于搜索集合.
从您链接到的文档:
-Contains描述:遏制操作员.判断参考值集合是否包含单个测试值.
在您提供的示例中,您正在使用仅包含一个字符串项的集合.
如果您阅读链接到的文档,您将看到一个演示此行为的示例:
例子:
PS C:\> "abc", "def" -Contains "def"
True
PS C:\> "Windows", "PowerShell" -Contains "Shell"
False #Not an exact match
Run Code Online (Sandbox Code Playgroud)
我想你想要的是-Match运营商:
"12-18" -Match "-"
Run Code Online (Sandbox Code Playgroud)
哪个回报True.
Eri*_*ris 36
-Contains实际上是一个集合运算符.如果集合包含对象,则为true.它不仅限于字符串.
-match并且-imatch是正则表达式字符串匹配器,并设置自动变量以用于捕获.
-like,-ilike是类似SQL的匹配器.
Esp*_*o57 10
你可以使用like:
"12-18" -like "*-*"
Run Code Online (Sandbox Code Playgroud)
或split为contains:
"12-18" -split "" -contains "-"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
183629 次 |
| 最近记录: |