วิธีแทนที่ตัวยึดตำแหน่งในสตริงโดยใช้ PowerShell
เมื่อเร็วๆ นี้ฉันกำลังทำงานกับสคริปต์ PowerShell ซึ่งฉันใช้วิธีการต่างๆ เพื่อแทนที่ตัวยึดตำแหน่งในสตริง ฉันคิดว่าฉันจะแบ่งปันกับคุณ ในบทช่วยสอนนี้ ฉันจะแสดงวิธีแทนที่ตัวยึดตำแหน่งในสตริงโดยใช้ PowerShell
หากต้องการแทนที่ตัวยึดตำแหน่งในสตริงโดยใช้ PowerShell คุณสามารถใช้ตัวดำเนินการ -replace ซึ่งใช้นิพจน์ทั่วไป ตัวอย่างเช่น เมื่อกำหนดสตริงเทมเพลต “เมืองหลวงของ {State} คือ {Capital}” คุณสามารถแทนที่ {State} ด้วย “California” และ {Capital} ด้วย “Sacramento” โดยใช้คำสั่งต่อไปนี้: $template=$template - แทนที่ “{State}”, “California” และ $template=$template -แทนที่ “{Capital}”, “Sacramento” ซึ่งจะเปลี่ยนเทมเพลตเป็น “เมืองหลวงของแคลิฟอร์เนียคือเมืองแซคราเมนโต”
1. การใช้ตัวดำเนินการ -replace
ตัวดำเนินการ -replace ใน PowerShell มีประโยชน์มากสำหรับการแทนที่ข้อความภายในสตริง ใช้นิพจน์ทั่วไปเพื่อระบุข้อความที่จะแทนที่ ทำให้มีความยืดหยุ่นมาก
ฉันขอแสดงตัวอย่างให้คุณดู
สมมติว่าเรามีสตริงเทมเพลตสำหรับรายงานที่มีตัวยึดตำแหน่งสำหรับชื่อรัฐและตัวพิมพ์ใหญ่ คุณสามารถเขียนสคริปต์ PowerShell ได้ดังนี้
$template = "The capital of {State} is {Capital}."
เราต้องการแทนที่ {State} ด้วย “California” และ {Capital} ด้วย “Sacramento”:
$template = "The capital of {State} is {Capital}."
$template = $template -replace "\{State\}", "California"
$template = $template -replace "\{Capital\}", "Sacramento"
$templateหลังจากรันคำสั่งข้างต้นแล้ว สตริง $template จะเป็น:
"The capital of California is Sacramento."ฉันรันสคริปต์ PowerShell ด้านบนโดยใช้โค้ด VS และคุณสามารถดูผลลัพธ์ได้ในภาพหน้าจอด้านล่าง:
อ่านแปลงสตริงเป็นตัวพิมพ์เล็กหรือตัวพิมพ์ใหญ่ใน PowerShell
2. การใช้เมธอด .Replace()
วิธีการ .Replace() เป็นอีกวิธีหนึ่งในการแทนที่ข้อความในสตริงใน PowerShell เป็นส่วนหนึ่งของคลาส .NET String และไม่ได้ใช้นิพจน์ทั่วไป
ฉันจะแสดงตัวอย่างวิธีใช้เมธอด .replace() เพื่อแทนที่ตัวยึดตำแหน่งใน Strings ใน PowerShell
พิจารณาเทมเพลตคำทักทายสำหรับอีเมลฝ่ายบริการลูกค้า:
$emailTemplate = "Dear {FirstName}, thank you for visiting our store in {City}."หากต้องการปรับแต่งเทมเพลตนี้สำหรับลูกค้าชื่อ John ที่มาเยี่ยมชมร้านค้าในนิวยอร์ก:
$emailTemplate = "Dear {FirstName}, thank you for visiting our store in {City}."
$emailTemplate = $emailTemplate.Replace("{FirstName}", "John")
$emailTemplate = $emailTemplate.Replace("{City}", "New York")
$emailTemplateสตริงผลลัพธ์จะเป็น:
"Dear John, thank you for visiting our store in New York."
คุณสามารถตรวจสอบผลลัพธ์ได้ในภาพหน้าจอด้านล่างหลังจากที่ฉันรันสคริปต์ PowerShell ด้านบน
ตรวจสอบการนับจำนวนอักขระในสตริงใน PowerShell
3. การใช้ -f (ตัวดำเนินการฟอร์แมต)
ตัวดำเนินการรูปแบบ -f ใน PowerShell เป็นอีกวิธีที่มีประโยชน์สำหรับการทดแทนสตริง ช่วยให้คุณสามารถแทรกค่าลงในสตริงที่ตัวยึดตำแหน่งที่ระบุ
นี่คือตัวอย่าง สมมติว่าเราจำเป็นต้องสร้างรายงานการขายสำหรับไตรมาสที่เฉพาะเจาะจง จากนั้นคุณสามารถเขียนสคริปต์ด้านล่าง
$reportTemplate = "In Q{0}, the total sales in {1} were ${2} million."
$quarter = 2
$state = "Texas"
$sales = 5.4
$report = $reportTemplate -f $quarter, $state, $sales
$reportสตริงผลลัพธ์จะเป็น:
"In Q2, the total sales in Texas were $5.4 million."ฉันรันสคริปต์ PowerShell ข้างต้นโดยใช้รหัส VS คุณสามารถดูผลลัพธ์ได้ในภาพหน้าจอด้านล่าง
อ่านตรวจสอบว่าสตริงมีหลายค่าใน PowerShell หรือไม่
4. การใช้ฟังก์ชันแบบกำหนดเอง
คุณยังสามารถเขียนฟังก์ชันแบบกำหนดเองใน PowerShell เพื่อจัดการการแทนที่หลายรายการพร้อมกันได้
ฉันขอแสดงวิธีการทำ
มาสร้างฟังก์ชั่นที่ใช้เทมเพลตและแฮชเทเบิลของการแทนที่กัน:
function Replace-Placeholders {
param (
[string]$template,
[hashtable]$replacements
)
foreach ($key in $replacements.Keys) {
$template = $template.Replace("{$key}", $replacements[$key])
}
return $template
}
$template = "The governor of {State} is {Governor}."
$replacements = @{
State = "Florida"
Governor = "Ron DeSantis"
}
$result = Replace-Placeholders -template $template -replacements $replacementsสตริงผลลัพธ์จะเป็น:
"The governor of Florida is Ron DeSantis."บทสรุป
หากคุณทำงานเป็นนักพัฒนา PowerShell คุณจะได้รับข้อกำหนดนี้บ่อยมาก ในบทช่วยสอนนี้ ฉันได้อธิบายวิธีแทนที่ตัวยึดตำแหน่งในสตริงใน PowerShell โดยใช้วิธีต่างๆ ฉันจะแนะนำให้ใช้ตัวดำเนินการ -replace ซึ่งเป็นเมธอด .Replace() สำหรับสิ่งนี้เสมอ
ฉันหวังว่าตัวอย่างข้างต้นทั้งหมดจะช่วยให้คุณเรียนรู้สิ่งนี้ได้อย่างสมบูรณ์


