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

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 เพื่อทำให้อักษรตัวแรกของแต่ละคำในสตริงเป็นตัวพิมพ์ใหญ่

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