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

วิธีเชื่อมต่อสตริงภายในลูปใน PowerShell


ในบทช่วยสอนบทหนึ่ง ฉันอธิบายวิธีการต่อสตริงใน PowerShell ที่นี่ ฉันจะแสดงแนวคิดขั้นสูงให้คุณดู ฉันจะอธิบายวิธีเชื่อมสตริงเข้าด้วยกันภายในลูปใน PowerShell โดยใช้วิธีต่างๆ ฉันจะแสดงวิธีการทำสิ่งนี้ใน for loop, foreach loop ฯลฯ

การต่อสตริงคือกระบวนการรวมสตริงตั้งแต่สองสตริงขึ้นไปเข้าด้วยกันบน PowerShell PowerShell มีหลายวิธีในการต่อสตริงภายในลูป รวมถึงตัวดำเนินการ + ตัวดำเนินการ += วิธี Join และ คลาส StringBuilder ฯลฯ

เชื่อมต่อสตริงภายในลูปใน PowerShell

ตอนนี้ให้ฉันอธิบายแต่ละวิธีโดยใช้ตัวอย่าง

1. การใช้ตัวดำเนินการ +

ตัวดำเนินการ + เป็นวิธีที่ง่ายที่สุดในการต่อสตริงใน PowerShell อย่างไรก็ตาม การใช้ cmdlet นี้เป็นลูปจะส่งผลต่อประสิทธิภาพเล็กน้อย

ตัวอย่าง: สำหรับลูป

ต่อไปนี้คือวิธีใช้ตัวดำเนินการ + เพื่อเชื่อมสตริงเข้าด้วยกันภายใน for loop ใน PowerShell

$combinedString = ""
for ($i = 1; $i -le 1000; $i++) {
    $combinedString = $combinedString + "Number $i "
}
Write-Output $combinedString

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

ตัวอย่าง: foreach Loop

ด้านล่างนี้คือสคริปต์ที่สมบูรณ์เพื่อเชื่อมสตริงเข้าด้วยกันภายใน PowerShell foreach loop

$combinedString = ""
foreach ($i in 1..1000) {
    $combinedString = $combinedString + "Number $i "
}
Write-Output $combinedString

ในทั้งสองตัวอย่าง การวนซ้ำแต่ละครั้งจะสร้างสตริงใหม่ ซึ่งอาจไม่มีประสิทธิภาพสำหรับการวนซ้ำขนาดใหญ่

2. การใช้ตัวดำเนินการ +=

ตอนนี้ ให้ฉันบอกวิธีที่ 2 แก่คุณ: การใช้ตัวดำเนินการ += เพื่อต่อสตริงเข้าด้วยกันภายในลูปใน PowerShell

ตัวดำเนินการ += จะเพิ่มตัวถูกดำเนินการทางขวาต่อท้ายตัวถูกดำเนินการทางซ้าย ทำให้เป็นตัวเลือกที่กระชับมากกว่าตัวดำเนินการ + อย่างไรก็ตาม ยังคงประสบปัญหาด้านประสิทธิภาพในการวนซ้ำขนาดใหญ่

ตัวอย่าง: สำหรับลูป

นี่คือสคริปต์ที่สมบูรณ์เพื่อเชื่อมสตริงเข้าด้วยกันภายใน for loop โดยใช้ += Operator ใน PowerShell

$combinedString = ""
for ($i = 1; $i -le 1000; $i++) {
    $combinedString += "Number $i "
}
Write-Output $combinedString

ตัวอย่าง: foreach Loop

นี่คือสคริปต์ที่สมบูรณ์เพื่อเชื่อมสตริงเข้าด้วยกันภายใน foreach loop โดยใช้ += Operator ใน PowerShell

$combinedString = ""
foreach ($i in 1..1000) {
    $combinedString += "Number $i "
}
Write-Output $combinedString

ตัวดำเนินการ += ยังสร้างสตริงใหม่สำหรับการวนซ้ำแต่ละครั้ง ซึ่งนำไปสู่ข้อเสียเปรียบด้านประสิทธิภาพที่คล้ายคลึงกับตัวดำเนินการ + ใน PowerShell

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

อ่านการต่อสตริงด้วยบรรทัดใหม่ใน PowerShell

3. การใช้วิธี Join()

วิธีการ Join มีประสิทธิภาพมากขึ้นในการเชื่อมโยงสตริงเมื่อจัดการกับอาร์เรย์หรือคอลเลกชัน โดยจะประมวลผลอาร์เรย์ทั้งหมดพร้อมกัน ช่วยลดค่าใช้จ่ายในการสร้างสตริงหลายรายการ

ตอนนี้ ผมจะแสดงตัวอย่างวิธีการใช้เมธอด join() เพื่อเชื่อมสตริงเข้าด้วยกันใน PowerShell foreach loop

ตัวอย่าง: foreach Loop พร้อม Join

$numbers = 1..1000 | ForEach-Object { "Number $_" }
$combinedString = [string]::Join(" ", $numbers)
Write-Output $combinedString

วิธีการนี้มีประสิทธิภาพเนื่องจากสร้างสตริงสุดท้ายในการดำเนินการครั้งเดียว แต่จำเป็นต้องสร้างอาร์เรย์ของสตริงก่อน

4. การใช้ StringBuilder

คลาส StringBuilder ได้รับการออกแบบมาสำหรับสถานการณ์ที่คุณต้องการแก้ไขสตริงหลายครั้ง ทำให้เป็นวิธีที่มีประสิทธิภาพสูงสุดสำหรับการวนซ้ำขนาดใหญ่

ตัวอย่าง: สำหรับ Loop ด้วย StringBuilder

ตอนนี้ ให้ฉันบอกวิธีที่มีประสิทธิภาพซึ่งจะมีประโยชน์มากในลูปที่ใหญ่กว่า

และนั่นคือการใช้คลาส StringBuilder

ด้านล่างนี้คือตัวอย่างวิธีใช้ StringBuilder เพื่อเชื่อมสตริงใน PowerShell ภายใน for loop

$stringBuilder = New-Object System.Text.StringBuilder
for ($i = 1; $i -le 1000; $i++) {
    [void]$stringBuilder.Append("Number $i ")
}
$combinedString = $stringBuilder.ToString()
Write-Output $combinedString

ตัวอย่าง: foreach Loop ด้วย StringBuilder

ด้านล่างนี้คือตัวอย่างวิธีใช้ StringBuilder เพื่อเชื่อมสตริงใน PowerShell ภายใน foreach loop

$stringBuilder = New-Object System.Text.StringBuilder
foreach ($i in 1..1000) {
    [void]$stringBuilder.Append("Number $i ")
}
$combinedString = $stringBuilder.ToString()
Write-Output $combinedString

คลาส StringBuilder ช่วยลดจำนวนสตริงระดับกลางที่สร้างขึ้นระหว่างการต่อข้อมูล ทำให้มีประสิทธิภาพสูงสำหรับลูปขนาดใหญ่

บทสรุป

PowerShell มีหลายวิธีในการเชื่อมสตริงเข้าด้วยกันภายในลูป หากคุณกำลังทำงานกับลูปขนาดเล็ก คุณสามารถใช้ตัวดำเนินการ + หรือ += ได้ อย่างไรก็ตาม สำหรับลูปที่ใหญ่กว่า คุณสามารถใช้เมธอด Join หรือคลาส StringBuilder เพื่อต่อสตริงภายในลูปใน PowerShell

  • การต่อข้อมูลอย่างง่าย (+ Operator): เข้าใจง่าย แต่ไม่มีประสิทธิภาพสำหรับการวนซ้ำขนาดใหญ่
  • += ตัวดำเนินการ: สะดวก แต่อาจนำไปสู่ปัญหาด้านประสิทธิภาพสำหรับการวนซ้ำขนาดใหญ่
  • Join Method: มีประสิทธิภาพในการเชื่อมอาร์เรย์หรือคอลเลกชันเข้าด้วยกัน
  • StringBuilder

ฉันหวังว่าตอนนี้คุณสามารถเชื่อมสตริงเข้าด้วยกันภายในลูปต่างๆ ใน PowerShell โดยใช้วิธีการข้างต้น

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