Considere el siguiente fragmento:
"12-18" -Contains "-"
Uno pensaría que esto se evalúa true
, pero no es así. Esto evaluará a en su false
lugar. No estoy seguro de por qué sucede esto, pero lo hace.
Para evitar esto, puede usar esto en su lugar:
"12-18".Contains("-")
Ahora la expresión se evaluará como verdadera.
¿Por qué el primer fragmento de código se comporta así? ¿Hay algo especial en -
eso con lo que no se juega bien -Contains
? La documentación no menciona nada al respecto.
"12-18".Contains("-")
Contains
operador de PowerShell y el método.Contains()
.NETString
.-Match
utiliza expresiones regulares. Eso significa que el parámetro de cadena es una expresión regular, no una cadena normal. Por ejemplo,"hello" -Match "."
devolverá verdadero, porque"."
es una expresión regular donde un '.' coincidirá con cualquier personaje. Para verificar si una cadena contiene un punto final:"hello" -Match "\."
(devuelve falso)-Contains
es en realidad un operador de colección. Es cierto si la colección contiene el objeto. No se limita a las cuerdas.-match
y-imatch
coinciden con cadenas de expresiones regulares, y establecen variables automáticas para usar con capturas.-like
,-ilike
son comparadores de tipo SQL.fuente
Puedes usar
like
:O
split
paracontains
:fuente
like
es lo mejor, o al menos lo más fácil.match
se usa para comparaciones de expresiones regulares.Referencia: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_comparison_operators?view=powershell-6
fuente