จะตรวจสอบว่าสตริงมีอยู่ในอาร์เรย์ใน PowerShell ได้อย่างไร
เมื่อเร็วๆ นี้ ฉันได้รับงานให้ตรวจสอบว่ามีสตริงเฉพาะอยู่ภายในอาร์เรย์ PowerShell หรือไม่ ในบทช่วยสอน PowerShell นี้ ฉันจะอธิบายวิธีการต่างๆ เพื่อตรวจสอบว่าสตริงเป็นสมาชิกของอาร์เรย์ใน PowerShell หรือไม่
ใน PowerShell หากต้องการตรวจสอบว่ามีสตริงอยู่ในอาร์เรย์หรือไม่ คุณสามารถใช้ตัวดำเนินการ -contains ตัวอย่างเช่น หาก $array คืออาร์เรย์ของคุณและ $string เป็นสตริงที่คุณกำลังมองหา คุณจะต้องเขียนเงื่อนไข $array -contains $string. สิ่งนี้จะส่งกลับ $true หากพบสตริงในอาร์เรย์ และ $false มิฉะนั้น
วิธีตรวจสอบว่ามีสตริงอยู่ในอาร์เรย์ใน PowerShell หรือไม่
ใน PowerShell คุณสามารถสร้างอาร์เรย์ได้โดยการกำหนดค่าหลายค่าให้กับตัวแปร โดยคั่นด้วยเครื่องหมายจุลภาค
$array = "apple", "banana", "cherry"ตอนนี้เรามาดูวิธีต่างๆ ในการตรวจสอบว่ามีสตริงอยู่ในอาร์เรย์นี้ใน PowerShell โดยใช้วิธีที่แตกต่างกันหรือไม่
วิธีที่ 1: การใช้ตัวดำเนินการ -contains
ตัวดำเนินการ -contains เป็นวิธีที่ตรงไปตรงมาที่สุดในการตรวจสอบการมีอยู่ของสตริงในอาร์เรย์ใน PowerShell หากอาร์เรย์มีค่าที่ระบุ จะส่งกลับ $true มิฉะนั้นจะส่งกลับ $false
นี่คือตัวอย่างที่สมบูรณ์ของ “PowerShell: ตรวจสอบว่ามีสตริงอยู่ในอาร์เรย์หรือไม่”
$array = "apple", "banana", "cherry"
$stringToCheck = "banana"
$result = $array -contains $stringToCheck
Write-Host "Does the array contain the string? $result"ที่นี่ คุณจะเห็นได้ว่าฉันได้รันสคริปต์ PowerShell โดยใช้โค้ด Visual Studio ผลลัพธ์จะเหมือนกับในภาพหน้าจอด้านล่าง:
วิธีที่ 2: การใช้วิธี .Contains()
.Contains() วิธีการใน PowerShell เป็นอีกวิธีหนึ่งในการตรวจสอบการมีอยู่ขององค์ประกอบในอาร์เรย์ เป็นวิธีการที่มาจากเฟรมเวิร์ก .NET พื้นฐาน และทำงานคล้ายกับตัวดำเนินการ -contains
นี่คือสคริปต์ PowerShell ที่สมบูรณ์
$array = "apple", "banana", "cherry"
$stringToCheck = "banana"
$result = $array.Contains($stringToCheck)
Write-Host "Does the array contain the string? $result"เมื่อคุณรันสคริปต์ PowerShell คุณจะเห็นผลลัพธ์ในภาพหน้าจอด้านล่าง
วิธีที่ 3: การใช้ตัวดำเนินการ -in
ตัวดำเนินการ -in เหมือนกับตัวดำเนินการที่ตรงกันข้ามกับตัวดำเนินการ -contains ใน PowerShell แทนที่จะเขียน $array -contains $stringToCheck คุณจะเขียน $stringToCheck -in $array หากสตริงอยู่ในอาร์เรย์ จะส่งกลับ $true มิฉะนั้นจะส่งกลับ $false
นี่คือสคริปต์ฉบับสมบูรณ์เพื่อตรวจสอบว่ามีสตริงอยู่ในอาร์เรย์ใน PowerShell หรือไม่
$array = "apple", "banana", "cherry"
$stringToCheck = "banana"
$result = $stringToCheck -in $array
Write-Host "Is the string in the array? $result"วิธีที่ 4: การใช้ ForEach-Object กับตัวดำเนินการ -match
หากคุณต้องการดำเนินการตรวจสอบที่ซับซ้อนมากขึ้น เช่น การค้นหาที่ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่หรือการจับคู่บางส่วน คุณสามารถใช้ ForEach-Object ด้วยตัวดำเนินการ -match ใน PowerShell
นี่คือสคริปต์ PowerShell ที่สมบูรณ์
$array = "apple", "banana", "cherry"
$stringToCheck = "Ban"
$result = $array | ForEach-Object { $_ -match $stringToCheck }
$result = $result -contains $true
Write-Host "Does the array contain the string (case-insensitive)? $result"ในตัวอย่างนี้ -match ใช้สำหรับการจับคู่บางส่วนที่ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ และจะส่งกลับ $true เนื่องจาก “banana” มี “Ban”
วิธีที่ 5: การใช้ฟังก์ชันแบบกำหนดเอง
คุณอาจต้องการกำหนดฟังก์ชันแบบกำหนดเองสำหรับสถานการณ์ที่ซับซ้อนมากขึ้นหรือการตรวจสอบซ้ำ นี่คือสคริปต์ที่สมบูรณ์เพื่อตรวจสอบว่ามีสตริงอยู่ใน PowerShell Array หรือไม่
function Test-StringInArray {
param(
[string[]]$array,
[string]$stringToCheck
)
return $array -contains $stringToCheck
}
$array = "apple", "banana", "cherry"
$stringToCheck = "banana"
$result = Test-StringInArray -array $array -stringToCheck $stringToCheck
Write-Host "Does the array contain the string? $result"ฟังก์ชันนี้สรุปตรรกะสำหรับการตรวจสอบว่ามีสตริงอยู่ในอาร์เรย์หรือไม่ ทำให้สคริปต์ของคุณสะอาดขึ้นและนำมาใช้ซ้ำได้มากขึ้น
นี่คือผลลัพธ์ในภาพหน้าจอด้านล่าง หลังจากที่ฉันเรียกใช้งานโดยใช้โค้ด VS
บทสรุป
การตรวจสอบว่ามีสตริงอยู่ในอาร์เรย์หรือไม่เป็นงานทั่วไปในการเขียนสคริปต์ PowerShell เราได้สำรวจวิธีการต่างๆ มากมายเพื่อให้บรรลุเป้าหมายนี้ ตั้งแต่ตัวดำเนินการง่ายๆ เช่น วิธี -contains และ .Contains() ไปจนถึงวิธีที่ซับซ้อนมากขึ้นด้วยฟังก์ชันที่กำหนดเองและการจับคู่บางส่วน
ในบทช่วยสอน PowerShell นี้ ฉันได้อธิบายวิธีตรวจสอบว่ามีสตริงอยู่ในอาร์เรย์ใน PowerShell หรือไม่ โดยใช้วิธีการต่างๆ และตัวอย่างจริง


