Considere o seguinte trecho:
"12-18" -Contains "-"
Você acha que isso é avaliado true
, mas não é. Isso será avaliado em false
vez disso. Não sei por que isso acontece, mas acontece.
Para evitar isso, você pode usar isso:
"12-18".Contains("-")
Agora a expressão será avaliada como verdadeira.
Por que o primeiro trecho de código se comporta dessa maneira? há algo de especial -
nisso que não se encaixa bem -Contains
? A documentação não menciona nada sobre isso.
fonte
"12-18".Contains("-")
Contains
operador do PowerShell e o método.Contains()
.NETString
.-Match
usa regex. Isso significa que o parâmetro string é uma regex, não uma string normal. Por exemplo,"hello" -Match "."
retornará true, porque"."
é uma regex em que um '.' irá corresponder a qualquer caractere. Para verificar se uma string contém um ponto final:"hello" -Match "\."
(retorna false)-Contains
é realmente um operador de coleção. É verdade se a coleção contém o objeto. Não é limitado a strings.-match
e-imatch
são correspondentes de cadeia de expressão regular e defina variáveis automáticas para usar com capturas.-like
,-ilike
são correspondentes do tipo SQL.fonte
Você pode usar
like
:Ou
split
paracontains
:fonte
like
é melhor, ou pelo menos mais fácil.match
é usado para comparações de expressões regulares.Referência: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_comparison_operators?view=powershell-6
fonte