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

วิธีจัดเรียงอาร์เรย์ตามตัวอักษรใน PowerShell


เมื่อเร็วๆ นี้ ฉันได้รับข้อกำหนดให้จัดเรียงอาร์เรย์ตามตัวอักษรใน PowerShell PowerShell จัดเตรียมวิธีการต่างๆ สำหรับการเรียงลำดับอาร์เรย์ตามตัวอักษร หนึ่งใน cmdlet ที่เรียบง่ายและมีประสิทธิภาพที่เรียกว่า Sort-Object สำหรับการเรียงลำดับอาร์เรย์ PowerShell ในโพสต์บล็อกนี้ เราจะสำรวจวิธีใช้ cmdlet นี้เพื่อจัดเรียงอาร์เรย์ตามตัวอักษรใน PowerShell พร้อมตัวอย่างที่สมบูรณ์

หากต้องการจัดเรียงอาร์เรย์ตามตัวอักษรใน PowerShell คุณสามารถใช้ Sort-Object cmdlet ตัวอย่างเช่น หากคุณมีอาร์เรย์ $array='Houston', 'Chicago', 'New York' คุณจะจัดเรียงโดยการไพพ์อาร์เรย์ลงใน cmdlet ดังนี้: $array | เรียงลำดับวัตถุ สิ่งนี้จะส่งคืนองค์ประกอบอาร์เรย์ที่เรียงลำดับตามตัวอักษรจากน้อยไปหามาก

จัดเรียงอาร์เรย์ตามตัวอักษรใน PowerShell

ตอนนี้เรามาดูวิธีต่างๆ ในการเรียงลำดับอาร์เรย์ตามตัวอักษรใน PowerShell

1. การใช้ Sort-Object Cmdlet

Sort-Object cmdlet เป็นคำสั่งอเนกประสงค์ใน PowerShell ที่ให้คุณจัดเรียงข้อมูลในอาร์เรย์หรือรายการตามคุณสมบัติของวัตถุ ตามค่าเริ่มต้น เมื่อคุณเรียงลำดับสตริง สตริงจะเรียงลำดับจากน้อยไปหามากตามตัวอักษร นี่เป็นตัวอย่างพื้นฐาน:

# Create an array of strings
$names = 'Smith', 'Anderson', 'Wright', 'Mitchell'

# Sort the array alphabetically
$sortedNames = $names | Sort-Object

# Display the sorted array
$sortedNames

ในตัวอย่างนี้ ผลลัพธ์จะแสดงชื่อตามลำดับตัวอักษร: Anderson, Mitchell, Smith, Wright

ฉันได้รันสคริปต์ PowerShell แบบเต็มโดยใช้โค้ด VS และคุณสามารถดูผลลัพธ์ได้ในภาพหน้าจอด้านล่าง:

2. เรียงลำดับอาร์เรย์ PowerShell ตามลำดับจากมากไปน้อย

หากคุณต้องการจัดเรียงอาร์เรย์จากมากไปน้อยใน PowerShell คุณสามารถใช้พารามิเตอร์สวิตช์ -Descending :

นี่คือสคริปต์ PowerShell ที่สมบูรณ์:

# Create an array of strings
$names = 'Smith', 'Anderson', 'Wright', 'Mitchell'

# Sort the array in descending alphabetical order
$sortedNamesDesc = $names | Sort-Object -Descending

# Display the sorted array
$sortedNamesDesc

คุณสามารถดูผลลัพธ์ได้ในภาพหน้าจอด้านล่าง:

3. เรียงลำดับอาร์เรย์ PowerShell ตามความยาวของสตริง

ข้อกำหนดในการเรียงลำดับทั่วไปอีกประการหนึ่งอาจเป็นการเรียงลำดับสตริงตามความยาวใน PowerShell คุณสามารถทำได้โดยใช้บล็อกสคริปต์ที่มี Sort-Object cmdlet:

นี่คือสคริปต์เพื่อเรียงลำดับอาร์เรย์สตริงตามตัวอักษรโดยใช้ความยาวสตริงใน PowerShell

# Create an array of strings
$names = 'Smith', 'Anderson', 'Wright', 'Mitchell'

# Sort the array based on string length
$sortedByLength = $names | Sort-Object { $_.Length }

# Display the sorted array
$sortedByLength

นี่คือผลลัพธ์ที่คุณเห็นในภาพหน้าจอด้านล่าง:

4. การเรียงลำดับแบบคำนึงถึงขนาดตัวพิมพ์

ตามค่าเริ่มต้น Sort-Object จะไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่เมื่อเรียงลำดับสตริงใน PowerShell อย่างไรก็ตาม หากคุณจำเป็นต้องเรียงลำดับตามตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ คุณสามารถใช้สวิตช์ -CaseSensitive ในอาร์เรย์ PowerShell

# Create an array of strings
$names = 'Smith', 'Anderson', 'Wright', 'Mitchell'

# Case-sensitive alphabetical sort
$caseSensitiveSort = $names | Sort-Object -CaseSensitive

# Display the sorted array
$caseSensitiveSort

5. การเรียงลำดับด้วยการเปรียบเทียบแบบกำหนดเอง

สำหรับการเรียงลำดับที่ซับซ้อนมากขึ้น คุณสามารถใช้วิธี [Array]::Sort ใน PowerShell ด้วย IComparer ที่กำหนดเอง:

# Custom comparer for reverse alphabetical sorting
$comparer = [System.Collections.Generic.Comparer[string]]::Create({
    param($x, $y)
    return [string]::CompareOrdinal($y, $x)
})

# Convert the array to a list
$list = [System.Collections.Generic.List[string]]$names

# Use the Sort method with the custom comparer
$list.Sort($comparer)

# Display the sorted list
$list

บทสรุป

การเรียงลำดับอาร์เรย์ตามตัวอักษรใน PowerShell ทำได้ตรงไปตรงมาด้วย Sort-Object cmdlet ไม่ว่าคุณจะเรียงลำดับสตริงแบบง่าย ต้องการเรียงลำดับจากมากไปหาน้อย จัดเรียงตามความยาวของสตริง หรือต้องการการเรียงลำดับแบบคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ Sort-Object ก็ช่วยคุณได้ สำหรับการเรียงลำดับขั้นสูงยิ่งขึ้น คุณสามารถใช้วิธี [Array]::Sort กับเครื่องมือเปรียบเทียบที่กำหนดเองได้

ในบทช่วยสอน PowerShell นี้ ฉันได้อธิบายวิธีจัดเรียงอาร์เรย์ตามตัวอักษรใน PowerShell โดยใช้วิธีต่างๆ พร้อมตัวอย่าง

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