เนื่องจากคุณใช้อยู่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” - ซึ่งเป็นสิ่งที่คุณขอ แต่เป็นการยากที่จะอ่าน คุณอาจต้องการแก้ไขข้อกำหนดของคุณสำหรับกรณีพิเศษของคำหนึ่งตัวอักษร (ซับสตริง) … (ต่อ)