วิธีเปรียบเทียบสตริงใน PowerShell
หากคุณกำลังทำงานกับสตริงใน PowerShell คุณอาจได้รับข้อกำหนดในการเปรียบเทียบสตริงใน PowerShell ในบทช่วยสอน PowerShell นี้ ฉันจะอธิบายวิธีเปรียบเทียบสตริงใน PowerShell โดยใช้วิธีต่างๆ พร้อมตัวอย่าง
หากต้องการเปรียบเทียบสตริงใน PowerShell คุณสามารถใช้ตัวดำเนินการ -eq สำหรับการตรวจสอบความเท่าเทียมกันโดยไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ หรือ -ceq สำหรับการเปรียบเทียบโดยคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ เมธอด .Equals() ให้ความยืดหยุ่นกับตัวเลือกต่างๆ เช่น OrdinalIgnoreCase สำหรับการพิจารณาขนาดตัวพิมพ์ สำหรับการจับคู่รูปแบบ ให้ใช้ตัวดำเนินการ -like พร้อมไวด์การ์ด หรือ -match สำหรับนิพจน์ทั่วไป นอกจากนี้ Compare-Object ยังสามารถเปรียบเทียบชุดสตริงสองชุดเพื่อเน้นความแตกต่างได้
เปรียบเทียบสตริงใน PowerShell
ต่อไปนี้เป็นวิธีการต่างๆ ที่คุณสามารถใช้เพื่อเปรียบเทียบสตริงใน PowerShell
1. การใช้ตัวดำเนินการ -eq
ตัวดำเนินการ PowerShell -eq ใช้เพื่อตรวจสอบว่าสองสตริงเท่ากันทุกประการหรือไม่ ตามค่าเริ่มต้น การเปรียบเทียบนี้ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
ตัวอย่าง:
$string1 = "NewYork"
$string2 = "newyork"
if ($string1 -eq $string2) {
Write-Output "The strings are equal."
} else {
Write-Output "The strings are not equal."
}
ในตัวอย่างนี้ ผลลัพธ์จะเป็น “สตริงเท่ากัน” เนื่องจากตัวดำเนินการ -eq ละเว้นตัวพิมพ์เล็กและใหญ่ตามค่าเริ่มต้น
ภาพหน้าจอด้านล่างแสดงผลลัพธ์หลังจากที่ฉันรันสคริปต์ PowerShell ด้านบนโดยใช้โค้ด VS
สำหรับการเปรียบเทียบแบบคำนึงถึงขนาดตัวพิมพ์ คุณสามารถใช้ตัวดำเนินการ -ceq ใน PowerShell ได้ เช่นเดียวกับตัวอย่างด้านล่าง
$string1 = "NewYork"
$string2 = "newyork"
if ($string1 -ceq $string2) {
Write-Output "The strings are equal."
} else {
Write-Output "The strings are not equal."
}ที่นี่ผลลัพธ์จะเป็น “สตริงไม่เท่ากัน” เพราะ -ceq พิจารณาตัวพิมพ์ของสตริง
ที่นี่คุณสามารถดูผลลัพธ์ได้ในภาพหน้าจอด้านล่าง:
อ่านตัวแปรแปลงเป็นสตริงใน PowerShell
2. การใช้ตัวดำเนินการ -ne
ตัวดำเนินการ -ne ตรวจสอบว่าสองสตริงไม่เท่ากันใน PowerShell หรือไม่ นอกจากนี้ยังไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่โดยค่าเริ่มต้น
ตัวอย่าง:
$string1 = "JaneDoe"
$string2 = "JaneSmith"
if ($string1 -ne $string2) {
Write-Output "The strings are not equal."
} else {
Write-Output "The strings are equal."
}
ผลลัพธ์จะเป็น “สตริงไม่เท่ากัน” เพราะ JaneDoe แตกต่างจาก JaneSmith
ฉันรันโค้ดด้านบนแล้ว และคุณจะเห็นผลลัพธ์ในภาพหน้าจอด้านล่าง:
3. การใช้เมธอด .Equals()
นี่เป็นอีกวิธีหนึ่งใน PowerShell เพื่อเปรียบเทียบสตริง ซึ่งเป็นวิธี .Equals() เมธอด .Equals() ช่วยให้คุณสามารถเปรียบเทียบสตริงโดยระบุการพิจารณาตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
ตัวอย่าง:
$string1 = "MichaelSmith"
$string2 = "michaelsmith"
if ($string1.Equals($string2, [System.StringComparison]::OrdinalIgnoreCase)) {
Write-Output "The strings are equal."
} else {
Write-Output "The strings are not equal."
}ในตัวอย่างนี้ ผลลัพธ์จะเป็น “สตริงเท่ากัน” เนื่องจาก OrdinalIgnoreCase ทำให้การเปรียบเทียบไม่คำนึงถึงขนาดตัวพิมพ์
สำหรับการเปรียบเทียบแบบคำนึงถึงขนาดตัวพิมพ์ คุณสามารถใช้ Ordinal:
if ($string1.Equals($string2, [System.StringComparison]::Ordinal)) {
Write-Output "The strings are equal."
} else {
Write-Output "The strings are not equal."
}ที่นี่ผลลัพธ์จะเป็น “สตริงไม่เท่ากัน” เนื่องจาก Ordinal บังคับใช้การพิจารณาตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
อ่านแยกสตริงด้วย Word ใน PowerShell
4. การใช้ Compare-Object Cmdlet
Compare-Object cmdlet มีประโยชน์เมื่อเปรียบเทียบชุดสตริงสองชุดและค้นหาความแตกต่างใน PowerShell
ตัวอย่าง:
$array1 = @("AliceJohnson", "BobSmith", "CharlieBrown")
$array2 = @("AliceJohnson", "CharlieBrown", "DavidWilliams")
$comparison = Compare-Object -ReferenceObject $array1 -DifferenceObject $array2
foreach ($difference in $comparison) {
Write-Output $difference
}ผลลัพธ์จะแสดงความแตกต่างระหว่างสองอาร์เรย์:
InputObject SideIndicator
----------- -------------
BobSmith <=
DavidWilliams =>5. การใช้ตัวดำเนินการ -like และ -match
คุณยังสามารถใช้ตัวดำเนินการ -like และ -match เพื่อเปรียบเทียบสตริงใน PowerShell
ตัวดำเนินการ -like ใช้สำหรับการจับคู่รูปแบบไวด์การ์ด ในขณะที่ตัวดำเนินการ -match จะใช้นิพจน์ทั่วไป
ตัวอย่างที่มี -like:
$string = "JessicaJones"
if ($string -like "Jessica*") {
Write-Output "The string starts with 'Jessica'."
}ผลลัพธ์จะเป็น “สตริงเริ่มต้นด้วย 'เจสสิก้า'” เพราะ -like รองรับรูปแบบไวด์การ์ด
ตัวอย่างที่มี -match:
$string = "JessicaJones"
if ($string -match "^Jessica") {
Write-Output "The string starts with 'Jessica'."
}ผลลัพธ์จะเหมือนกับตัวอย่างก่อนหน้า แต่ -match ใช้นิพจน์ทั่วไปเพื่อทำการเปรียบเทียบ
บทสรุป
การเปรียบเทียบสตริงใน PowerShell สามารถทำได้หลายวิธี เช่น การตรวจสอบความเท่าเทียมกันด้วย -eq หรือใช้ .Equals() หรือใช้การจับคู่รูปแบบขั้นสูงกับ -like และ -match
ฉันหวังว่าตอนนี้คุณคงเข้าใจดีถึงวิธีเปรียบเทียบสตริงใน PowerShell โดยใช้วิธีต่างๆ


