Pertimbangkan cuplikan berikut:
"12-18" -Contains "-"
Anda akan berpikir ini mengevaluasi true
, tetapi ternyata tidak. Ini akan mengevaluasi menjadi false
. Saya tidak yakin mengapa ini terjadi, tetapi itu terjadi.
Untuk menghindarinya, Anda dapat menggunakan ini sebagai gantinya:
"12-18".Contains("-")
Sekarang ekspresi akan dievaluasi menjadi benar.
Mengapa cuplikan kode pertama berperilaku seperti itu? apakah ada sesuatu yang istimewa tentang -
hal itu yang tidak cocok -Contains
? The dokumentasi tidak menyebutkan apa-apa tentang hal itu.
"12-18".Contains("-")
Contains
operator PowerShell dan metode.Contains()
NETString
.-Match
menggunakan regex. Itu berarti parameter string adalah regex, bukan string normal. Misalnya,"hello" -Match "."
akan mengembalikan true, karena"."
merupakan regex dengan '.' akan cocok dengan karakter apapun. Untuk memeriksa apakah sebuah string berisi tanda titik:"hello" -Match "\."
(mengembalikan false)-Contains
sebenarnya adalah operator koleksi. Memang benar jika koleksi berisi objek. Itu tidak terbatas pada string.-match
dan-imatch
merupakan pencocokan string ekspresi reguler, dan menyetel variabel otomatis untuk digunakan dengan tangkapan.-like
,-ilike
adalah pencocokan mirip SQL.sumber
Anda dapat menggunakan
like
:"12-18" -like "*-*"
Atau
split
untukcontains
:"12-18" -split "" -contains "-"
sumber
like
adalah yang terbaik, atau setidaknya termudah.match
digunakan untuk perbandingan regex.Referensi: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_comparison_operators?view=powershell-6
sumber