เนื่องจากคุณใช้อยู่bash
หากคุณเก็บสตริงไว้ในตัวแปรคุณสามารถทำได้โดยใช้เชลล์เท่านั้น:
uscore="this_is_the_string_to_be_converted"
arr=(${uscore//_/ })
printf %s "${arr[@]^}"
ThisIsTheStringToBeConverted
${uscore//_/ }
แทนที่ทั้งหมด_
ด้วยช่องว่าง(....)
แยกสตริงเป็นอาร์เรย์${arr[@]^}
แปลงอักษรตัวแรกของแต่ละองค์ประกอบเป็นตัวprintf %s ..
พิมพ์ใหญ่แล้วพิมพ์องค์ประกอบทั้งหมดทีละตัว
คุณสามารถจัดเก็บสตริงอูฐใส่ในตัวแปรอื่น:
printf -v ccase %s "${arr[@]^}"
และใช้ / นำมาใช้ซ้ำในภายหลังเช่น:
printf %s\\n $ccase
ThisIsTheStringToBeConverted
หรือด้วยzsh
:
uscore="this_is_the_string_to_be_converted"
arr=(${(s:_:)uscore})
printf %s "${(C)arr}"
ThisIsTheStringToBeConverted
(${(s:_:)uscore})
แยกสตริง_
ให้เป็นอาร์เรย์(C)
ใช้อักษรตัวแรกของแต่ละองค์ประกอบและprintf %s ...
พิมพ์องค์ประกอบทั้งหมดทีละตัว
เพื่อเก็บไว้ในตัวแปรอื่นคุณสามารถใช้(j::)
เพื่อรวมองค์ประกอบ:
ccase=${(j::)${(C)arr}}
และใช้ / นำมาใช้ซ้ำในภายหลัง:
printf %s\\n $ccase
ThisIsTheStringToBeConverted
\U\2
แทรกข้อความที่พบจากกลุ่มที่สองซึ่งแปลงเป็น CAPS ทั้งหมด เปรียบเทียบกับ\u\2
ซึ่งแทรกข้อความในกรณีประโยคโดยมีเพียงอักขระตัวแรกที่เป็นตัวพิมพ์ใหญ่ (2) ตัวอย่างทั้งหมดที่ระบุด้านล่างจะแปล“ this_is_a_string” เป็น“ ThisIsAString” - ซึ่งเป็นสิ่งที่คุณขอ แต่เป็นการยากที่จะอ่าน คุณอาจต้องการแก้ไขข้อกำหนดของคุณสำหรับกรณีพิเศษของคำหนึ่งตัวอักษร (ซับสตริง) … (ต่อ)