Strings
หลังจากที่พอจะเริ่มทำความเข้าใจกับ ruby ได้แล้วส่วนหนึ่งก็ต้องมาเริ่มต่อกันที่ Strings ซึ่งเป็นส่วนที่แทบจะทุกภาษาใช้งานกัน เนื่องจากเป็นส่วนที่ทำงานเกี่ยวกับ textRuby นั้นทำงานกับ strings ไม่ต่างจากการทำงานกับตัวเลข. string จะอยู่ในเครื่องหมาย double-quoted ("...") หรือ single-quoted ('...')
ruby> "abc" |
Double- และ Single- quoted มีความแตกต่างกันในการใช้งาน
Double-quoted จะอนุญาตให้มีการใช้ \ ซึ่งจะไว้ใช้เพื่อยกเลิกความหมายพิเศษของอักขระนั้นๆ และสามารถทำคำสั่งภายใน #{} ได้อีกด้วย
Single-quoted จะทำการยกเลิกความหมายพิเศษทั้งหมด รวมถึง \ และ #{} ด้วย
ลองดูตัวอย่างต่อไปนี้เพื่อประกอบความเข้าใจ
ruby> print "a\nb\nc","\n" |
Ruby สามารถทำการจัดการและให้ความรู้สึก string ได้ดีกว่าภาษาที่นิยมใช้กันเช่น C และอีกมากมาย นอกนจากนี้ยังสามารถใช้เครื่องหมาย +, * เพื่อทำการรวม (join) หรือ ทำซ้ำ (repeat) ได้อีกด้วย
ruby> "foo" + "bar" |
ซึ่งถ้าจะเทียบกับภาษา c ที่ต้องมีการจัดการ memory อย่างวุ่นวายเช่น
char *s = malloc(strlen(s1)+strlen(s2)+1); |
แต่ว่า ruby นั้นเราไม่ต้องใส่ใจกับการจัดการหน่วยความจำ (memory management) เพื่อรองรับการเกิดของ strings เลย เราเป็นอิสระจากการจัดการหน่วยความจำ
ลองมาดูตัวอย่างของการจัดการ string ด้วย Ruby กันอีกสักหน่อย
การรวม:
ruby> word = "fo" + "o" |
การทำซ้ำ:
ruby> word = word * 2 |
การแยกอักขระที่ทำงานด้วย Ruby:
ruby> word[0] |
(ค่าติดลบหมายถึง offset จากจุดสิ้นสุดของ string, มิใช่จากจุดเริ่ม)
การแยก string ย่อย (substring):
ruby> herb = "parsley" |
การเปรียบเทียบความเท่ากัน:
ruby> "foo" == "foo" |
หลักการที่เราได้มาลองมาทำเกมทายคำกัน โดยอาศัยหลัการของคำที่เรามีและส่วนประกอบเพิ่มเติม
# save this as guess.rb |
ทำการ save เป็นชื่อไฟล์ guess.rb แล้วทำการเรียก ตัวอย่างเช่น
% ruby guess.rb |

