PowerShell เข้าร่วมอาร์เรย์ | เรียนรู้ตัวอย่างของ PowerShell เข้าร่วมอาร์เรย์
ข้อมูลเบื้องต้นเกี่ยวกับ PowerShell เข้าร่วมอาร์เรย์
อาร์เรย์ PowerShell Join เป็นตัวดำเนินการเพื่อรวมอาร์เรย์โดยใช้ตัวดำเนินการและใช้วิธีการของคลาส String การรวมสองอาร์เรย์เข้าด้วยกันจะสร้างอาร์เรย์ที่สามเนื่องจากลักษณะของอาร์เรย์ที่มีขนาดคงที่ (ไม่ใช่ ArrayList) ผลลัพธ์ของอาร์เรย์ Join ยังเป็นคอลเลกชันของ Object อีกด้วย
ไวยากรณ์
การดำเนินการ Join Array รองรับไวยากรณ์ต่างๆ
- ตัวดำเนินการ '+' เพื่อรวมอาร์เรย์สตริงสองตัวหรืออาร์เรย์ประเภทข้อมูลที่แตกต่างกัน
- เข้าร่วม(Char, Object[]): เพื่อเชื่อมอักขระเข้ากับอาร์เรย์ Object
- เข้าร่วม(Char, String[]): เพื่อเชื่อมอักขระเข้ากับอาร์เรย์สตริง
- เข้าร่วม(สตริง, วัตถุ[]): เพื่อเชื่อมสตริงเข้ากับอาร์เรย์วัตถุ
- เข้าร่วม(Char, String, Int32, Int32): เพื่อเชื่อมอักขระเข้ากับอาร์เรย์สตริงตั้งแต่ดัชนีเริ่มต้นจนถึงจำนวนสตริง
ตัวอย่าง
นี่คือตัวอย่างต่อไปนี้ที่กล่าวถึงด้านล่าง
ตัวอย่าง #1 - การรวมสองอาร์เรย์ด้วยตัวดำเนินการ '+'
สมมติว่าเรามีอาร์เรย์ที่แตกต่างกันสองชุด และเราจำเป็นต้องรวมอาร์เรย์เหล่านั้นเข้าด้วยกัน
$array1 = "Cat","Dog","Cow"
$array2 = "Cars","Bikes","Trucks"
To join two arrays, we will use the ‘+’ operator here.
$array = $array1 + $array2
$arrayเอาต์พุต:
ตัวอย่าง #2 - การรวมสองอาร์เรย์เข้ากับประเภทข้อมูลที่แตกต่างกัน
ในตัวอย่างแรก เราได้เห็นค่าที่อาร์เรย์ PowerShell สองตัวเก็บไว้เป็นคอลเลกชันของสตริง อย่างไรก็ตาม เราสามารถเก็บค่าที่แตกต่างกันไว้ในสตริงและรวมเข้าด้วยกันได้
ตัวอย่างเช่น,
$array1 = "Cat","Dog","Cow"
$array2 = 11,"TwoTwo",33,"FourFour"ถ้าเราตรวจสอบประเภทข้อมูลของตัวแปรทั้งสอง $Array1 และ $Array2 มันจะเป็นกลุ่มของ Object[] ดังที่แสดงด้านล่าง
ซึ่งหมายความว่าอยู่ในอาร์เรย์ ไม่สำคัญว่าคุณป้อนวัตถุประเภทใด ในที่สุดมันก็กลายเป็นที่สะสมของวัตถุ ดังนั้นเราจึงสามารถรวมอาร์เรย์จำนวนเท่าใดก็ได้โดยใช้ตัวดำเนินการ '+'
ในตัวอย่างนี้ การรวมสองอาร์เรย์เข้าด้วยกัน
$array = $array1 + $array2
$arrayเอาต์พุต:
ในสองตัวอย่างแรก เราใช้อาร์เรย์ที่สามเพื่อจัดเก็บผลลัพธ์ มาตรวจสอบประเภทข้อมูลกัน มันควรจะเป็นการรวบรวมวัตถุเช่นกัน
$array.GetType()เอาต์พุต:
ตัวอย่าง #3 - การรวมสองอาร์เรย์โดยใช้ ArrayList
ในตัวอย่างด้านล่าง เราจะรวมสองอาร์เรย์เข้าด้วยกันโดยใช้คลาส .Net System.Collection.ArrayList และในการเข้าร่วมการดำเนินการ เราจำเป็นต้องใช้เมธอด Add() ดังที่แสดงด้านล่าง เรามีอาร์เรย์สองตัว และเชื่อมต่อกันโดยใช้เมธอด Add()
$array1 = "Cat","Dog","Cow"
$array2 = 11,"TwoTwo",33,"FourFour"
foreach($value in $array1){$JoinArray.Add($value) | Out-Null}
foreach($value in $array2){$JoinArray.Add($value) | Out-Null}
$JoinArrayเอาต์พุต:
เราสามารถเพิ่มอาร์เรย์โดยตรงไปยังวิธีการเพิ่ม เช่น $JoinArray($Array1) แต่ปัญหาคือถือว่าอาร์เรย์ทั้งหมดเป็นดัชนี 0 และอาร์เรย์ถัดไป $JoinArray($Array2) เป็นดัชนี 1 ดังนั้นเราจึงต้องเพิ่ม แต่ละค่าโดยใช้ foreach loop
ตัวอย่างที่ 4 - ตัวอย่างการเข้าร่วมอาร์เรย์สตริง - I
ในอาร์เรย์สตริง คลาส System.String .Net รองรับวิธีการเข้าร่วม มีวิธีการโอเวอร์โหลดหลายวิธีในการเข้าร่วมอาร์เรย์ ดูลิงค์อ้างอิงด้านล่างสำหรับวิธีการรวมสตริง
https://docs.microsoft.com/en-us/dotnet/api/system.string.join?view=net-5.0#System_String_Join_System_Char_System_Object
เราจะใช้วิธีการบางอย่างข้างต้น
ในวิธีการรวมทั้งหมดข้างต้น พารามิเตอร์แรกเป็นตัวคั่นเสมอ และพารามิเตอร์ที่สองคือรายการสำหรับดำเนินการรวม
วิธีการเข้าร่วมสตริงแรกที่เราจะใช้ที่นี่คือ เข้าร่วม (Char, Object[]) โดยที่ Char คือตัวคั่น และ Object[] คือรายการที่ต้องดำเนินการ มันคืออาร์เรย์ของ Object[] ดังนั้นเราจึงสามารถส่งผ่านวัตถุใดๆ ที่อยู่ข้างในได้ และด้วยเหตุนี้มันจึงเป็นวิธีสตริง ควรแปลง Object[] นั้นให้เป็นอาร์เรย์ String ตัวอย่างเช่น,
$Services = Get-Service
[String]::Join('|',$Services)เอาต์พุต:
ดังที่คุณเห็นในตัวอย่างข้างต้น เราได้เข้าร่วมแต่ละออบเจ็กต์บริการ[]ด้วยตัวคั่น '|' สำหรับตัวอย่างนี้ ผลลัพธ์อาจอยู่ในรูปแบบที่เหมาะสม แต่ในบางตัวอย่าง เช่น Get-Process เมื่อคุณส่ง Object[] ทั้งหมดเป็นสตริง ตัวอย่างเช่น,
$procs = Get-Process
[String]::Join('|',$procs)เอาต์พุต:
ผลลัพธ์ข้างต้นไม่ใช่สิ่งที่ต้องการ แต่เราสามารถใช้คุณสมบัติของมันเพื่อแยก Object ด้วยตัวคั่นที่ให้มาแทน ตัวอย่างเช่น,
[String]::Join('|',$procs.name)เอาต์พุต:
ตัวอย่าง #5 - ตัวอย่าง String Join Array - II
วิธีที่สองที่เราใช้สำหรับ String .Net Class เพื่อเข้าร่วมอาร์เรย์คือ Join(Char, String[]) โดยเชื่อมอาร์เรย์สตริงเข้ากับตัวคั่นที่กล่าวถึงในพารามิเตอร์แรก ตัวอย่างเช่น,
$str = "This","is","PowerShell","String"
[String]::Join('^',$str)เอาต์พุต:
หากต้องการเข้าร่วมกับอวกาศ
[String]::Join(' ',$str)
This is PowerShell Stringตัวอย่าง #6 - ตัวอย่างการเข้าร่วมสตริงสตริง - III
ในสองตัวอย่างข้างต้น เราได้รวมอาร์เรย์สตริงโดยใช้อักขระ ตอนนี้เรายังสามารถเชื่อมสตริงโดยใช้สตริงอื่นได้เนื่องจากวิธีโอเวอร์โหลดรองรับสิ่งนั้น ในพารามิเตอร์ตัวที่สอง เราสามารถส่งผ่าน Object หรือ String ได้
การต่อสตริงเข้ากับอาร์เรย์รองรับสองวิธี
- เข้าร่วม(สตริง, วัตถุ[]): เชื่อมต่ออาร์เรย์ที่คล้ายวัตถุ (รับบริการหรือรับกระบวนการ) ด้วยตัวแยกสตริงระหว่างเอาต์พุตออบเจ็กต์แต่ละรายการ ตัวอย่างเช่น,
$ser = Get-Service
[String]::Join(' Hello ',$ser)เอาต์พุต:
ดังที่แสดงในตัวอย่างข้างต้น บริการจะถูกแยกและเชื่อมต่อกันด้วยคีย์เวิร์ด Hello รวมถึงการเว้นวรรค
- เข้าร่วม(สตริง, สตริง[]): เชื่อมอาร์เรย์สตริงโดยใช้ตัวคั่นสตริงระหว่างแต่ละองค์ประกอบ
เช่น
$str = "This","is","PowerShell","String"
[String]::Join(' String ',$str)เอาต์พุต:
ตัวอย่าง #7 - ตัวอย่างการเข้าร่วมสตริงสตริง - IV
ในวิธีนี้ เราใช้อักขระหรือสตริงเป็นตัวคั่นสำหรับ Object array[] หรือ string array[] เพื่อเชื่อมกัน เราสามารถใช้สองวิธีแยกกันสำหรับสิ่งนี้
- เข้าร่วม (อักขระ, สตริง [], Int32, Int32)
พารามิเตอร์อธิบายไว้ด้านล่าง
- Char: ตัวคั่นอักขระสำหรับอินพุตที่กำหนด
- สตริง[]: อาร์เรย์สตริงเพื่อแยกและรวมเข้ากับอักขระ
- Int32: ดัชนีเริ่มต้นสำหรับการต่อข้อมูล
- Int32: นับจากดัชนีเริ่มต้น
ตัวอย่างเช่น,
$str = "This","is","PowerShell","string","to","test","the","join","array"
[String]::Join('#',$str, 2,5)เอาต์พุต:
ในตัวอย่างข้างต้น เราใช้ตัวคั่น '#' เพื่อเชื่อมสตริงจากดัชนีเริ่มต้น 2 และจำนวนคำทั้งหมด 5 คำ
- เข้าร่วม(สตริง, สตริง[], Int32, Int32)
เช่นเดียวกับการดำเนินการข้างต้น เราสามารถใช้วิธี Join เพื่อเชื่อมอาร์เรย์สตริงโดยใช้สตริงอื่นกับดัชนีเริ่มต้นและจำนวนทั้งหมด
ตัวอย่างเช่น,
$str = "This","is","PowerShell","string","to","test","the","join","array"
[String]::Join(" hello world ",$str, 1,3)เอาต์พุต:
สรุป - PowerShell เข้าร่วมอาร์เรย์
อาร์เรย์ PowerShell Join เป็นการดำเนินการที่มีประโยชน์และทรงพลังมากสำหรับสคริปต์ ซึ่งให้บริการตามวัตถุประสงค์พื้นฐานหลายประการ เช่น Joining Path การเพิ่มค่าระหว่างอาร์เรย์สตริง ฯลฯ มีคำสั่งอื่นๆ ที่ให้บริการพื้นฐาน Join เช่น Join-Path และ Join-ADlStoreItem ซึ่งให้บริการทางอ้อมในการดำเนินการอาร์เรย์เดียวกัน แต่เป็นคำสั่งขั้นสูง














