PowerShell: ตัวพิมพ์ใหญ่อักษรตัวแรกของแต่ละคำ
เมื่อเร็วๆ นี้ ฉันได้รับข้อกำหนดให้แปลงอักษรตัวแรกของแต่ละคำเป็นตัวพิมพ์ใหญ่ใน PowerShell ฉันลองใช้วิธีต่างๆ และพยายามแบ่งปัน ในบทช่วยสอนนี้ ฉันจะแสดงวิธีทำให้ตัวอักษรตัวแรกของแต่ละคำใน PowerShell เป็นตัวพิมพ์ใหญ่โดยใช้วิธีการที่แตกต่างกัน
หากต้องการใช้อักษรตัวพิมพ์ใหญ่ของแต่ละคำในสตริงโดยใช้ PowerShell คุณสามารถใช้เมธอด ToTitleCase() จากเฟรมเวิร์ก .NET ซึ่งสามารถเข้าถึงได้ผ่าน PowerShell . ขั้นแรก สร้างออบเจ็กต์ TextInfo โดยใช้ (Get-Culture).TextInfo จากนั้นจึงใช้ $TextInfo.ToTitleCase($string.ToLower()) ไปที่สตริง
วิธีที่ 1: การใช้ ToTitleCase()
วิธีที่ตรงไปตรงมาที่สุดในการเปลี่ยนตัวอักษรตัวแรกของแต่ละคำใน PowerShell ให้เป็นตัวพิมพ์ใหญ่คือการใช้เมธอด ToTitleCase() วิธีการนี้เป็นส่วนหนึ่งของกรอบงาน .NET และสามารถเข้าถึงได้ผ่าน PowerShell ฉันขอแสดงตัวอย่างพร้อมสคริปต์ที่สมบูรณ์
ตัวอย่าง
# Create a TextInfo object
$TextInfo = (Get-Culture).TextInfo
# Sample string
$string = "this is a sample string"
# Capitalize the first letter of each word
$result = $TextInfo.ToTitleCase($string.ToLower())
# Output the result
Write-Output $resultในตัวอย่างนี้ ก่อนอื่นเราได้รับออบเจ็กต์ TextInfo จากวัฒนธรรมปัจจุบัน จากนั้นเราใช้วิธี ToTitleCase() เพื่อทำให้ตัวอักษรตัวแรกของแต่ละคำในสตริงเป็นตัวพิมพ์ใหญ่ โปรดทราบว่าเราจะเรียก ToLower() ในสตริงเพื่อให้แน่ใจว่าตัวอักษรอื่นๆ ทั้งหมดเป็นตัวพิมพ์เล็กก่อนที่จะใช้ ToTitleCase()
คุณสามารถดูผลลัพธ์ที่แน่นอนได้ในภาพหน้าจอด้านล่างหลังจากที่ฉันรันสคริปต์ PowerShell ด้านบนโดยใช้โค้ด VS
ตรวจสอบการแยกข้อความจากสตริงระหว่างตัวคั่นโดยใช้ PowerShell
วิธีที่ 2: การใช้การจัดการสตริง
คุณยังสามารถใช้เทคนิคการจัดการสตริงเพื่อเป็นตัวพิมพ์ใหญ่อักษรตัวแรกของแต่ละคำใน PowerShell วิธีการนี้เกี่ยวข้องกับการแยกสตริงออกเป็นคำ การใช้อักษรตัวพิมพ์ใหญ่ในแต่ละคำ จากนั้นจึงรวมกลับเข้าด้วยกัน
ฉันขอแสดงตัวอย่างเพื่อช่วยให้คุณเข้าใจดีขึ้น
ตัวอย่าง
# Sample string
$string = "this is another example string"
# Split the string into words
$words = $string.Split(" ")
# Capitalize the first letter of each word
$capitalizedWords = $words | ForEach-Object {
$_.Substring(0,1).ToUpper() + $_.Substring(1).ToLower()
}
# Join the words back into a single string with spaces
$result = $capitalizedWords -join " "
# Output the result
Write-Output $resultในตัวอย่างนี้ เราแยกสตริงออกเป็นอาร์เรย์ของคำโดยใช้เมธอด Split() จากนั้นเราวนซ้ำแต่ละคำ เปลี่ยนตัวอักษรตัวแรกให้เป็นตัวพิมพ์ใหญ่โดยใช้ Substring() และ ToUpper() และแปลงคำที่เหลือเป็นตัวพิมพ์เล็กด้วย ToLower() . ในที่สุดเราก็รวมคำกลับเข้าด้วยกันเป็นสตริงเดียว
นี่คือผลลัพธ์ที่คุณเห็นในภาพหน้าจอด้านล่าง:
อ่านการนับจำนวนสตริงย่อยในสตริงใน PowerShell
วิธีที่ 3: การใช้นิพจน์ทั่วไป
คุณยังสามารถใช้นิพจน์ทั่วไปใน PowerShell ได้ PowerShell ช่วยให้คุณใช้ regex สำหรับการจัดการข้อความที่ซับซ้อนมากขึ้น วิธีการนี้มีประโยชน์ในการจัดการกรณีหรือรูปแบบเฉพาะ
นี่คือสคริปต์ที่สมบูรณ์
ตัวอย่าง
# Sample string
$string = "yet another example string"
# Use regex to capitalize the first letter of each word
$result = [regex]::Replace($string, '\b\w', { $args[0].Value.ToUpper() })
# Output the result
Write-Output $result
ในตัวอย่างนี้ เราใช้วิธี Replace() จากคลาส [regex] รูปแบบ \b\w ตรงกับตัวอักษรตัวแรกของแต่ละคำ (โดยที่ \b คือขอบเขตของคำ และ \w คืออักขระของคำใดๆ) . ฟังก์ชันการแทนที่ { $args[0].Value.ToUpper() } จะแปลงอักขระที่ตรงกันให้เป็นตัวพิมพ์ใหญ่
คุณสามารถดูผลลัพธ์ได้ในภาพหน้าจอด้านล่าง:
บทสรุป
ในบทช่วยสอนนี้ ฉันได้อธิบายวิธี ใช้อักษรตัวแรกของแต่ละคำในสตริงใน PowerShell ให้เป็นตัวพิมพ์ใหญ่โดยใช้วิธีการต่างๆ
- ToTitleCase() เหมาะอย่างยิ่งสำหรับงานที่ใช้อักษรตัวพิมพ์ใหญ่ที่ง่ายและรวดเร็ว
- การจัดการสตริง ให้การควบคุมและการปรับแต่งที่มากขึ้น
- นิพจน์ทั่วไป มีความสามารถในการจับคู่รูปแบบและการแปลงข้อความที่มีประสิทธิภาพ
ฉันขอแนะนำให้ใช้วิธี ToTitleCase() PowerShell เพื่อทำให้อักษรตัวแรกของแต่ละคำในสตริงเป็นตัวพิมพ์ใหญ่


