ค้นหาเว็บไซต์

จะตรวจสอบว่าสตริงมีอยู่ในอาร์เรย์ใน 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 หรือไม่ โดยใช้วิธีการต่างๆ และตัวอย่างจริง

บทความที่เกี่ยวข้อง