PowerShell and the -contains operator
PowerShell and the -contains operator
PowerShell and the -contains operator
Re: PowerShell and the -contains operator
The `-Contains` operator doesn't do substring comparisons and the match must be on a complete string and is used to search collections.
From the documentation you linked to:
-Contains
Description: Containment operator. **Tells whether a collection of reference values includes a single test value.**
In the example you provided you're working with a collection containing just one string item.
If you read the documentation you linked to you'll see an example that demonstrates this behaviour:
Examples:
```
PS C:\> "abc", "def" -Contains "def"
True
PS C:\> "Windows", "PowerShell" -Contains "Shell"
False #Not an exact match
```
I think what you want is the [`-Match`](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_comparison_operators?view=powershell-6#-match) operator:
```
"12-18" -Match "-"
```
Which returns `True`.
**Important:** As pointed out in the comments and in the [linked documentation](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_comparison_operators?view=powershell-6#-match), it should be noted that the `-Match` operator uses [regular expressions](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_regular_expressions?view=powershell-6) to perform text matching.
From the documentation you linked to:
-Contains
Description: Containment operator. **Tells whether a collection of reference values includes a single test value.**
In the example you provided you're working with a collection containing just one string item.
If you read the documentation you linked to you'll see an example that demonstrates this behaviour:
Examples:
```
PS C:\> "abc", "def" -Contains "def"
True
PS C:\> "Windows", "PowerShell" -Contains "Shell"
False #Not an exact match
```
I think what you want is the [`-Match`](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_comparison_operators?view=powershell-6#-match) operator:
```
"12-18" -Match "-"
```
Which returns `True`.
**Important:** As pointed out in the comments and in the [linked documentation](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_comparison_operators?view=powershell-6#-match), it should be noted that the `-Match` operator uses [regular expressions](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_regular_expressions?view=powershell-6) to perform text matching.