Hãy nói về phương thức gsub Ruby & cách dùng. Trước tiên, cần chuỗi để chơi với method này. Tại sao? Vì mục đích gsub là thay thế phần của chuỗi. Thực tế: "sub" trong "gsub" là "substitute" (thay thế), "g" là "global" (toàn cục). Chuỗi ví dụ:
str = "white chocolate"
Muốn thay "white" thành "dark". Cách:
str.gsub("white", "dark")
Ý nghĩa: Cho chuỗi str, thay TẤT CẢ lần xuất hiện từ đầu (white) bằng từ thứ hai (dark). Nghĩa là ăn được chocolate ngon hơn. À wait, chỉ là chuỗi. Không ăn được! 🙂 Anyway... gsub Ruby làm được nhiều hơn thay thế đơn giản. Xem vài ví dụ.
Thay Thế Pattern Với Biểu Thức Chính Quy
Thay từ đơn lẻ ổn. Nhưng nếu thay pattern? Như: Năm, email, số điện thoại... Bạn có thể! Ví dụ:
"a1".gsub(/\d/, "2") # "a2"
Đối số đầu là regex, quá nhiều để cover ở đây. Nhưng nó là ngôn ngữ pattern-matching. Ở đây \d tìm số, như "1" trong "a1". Cũng làm được:
"a1".gsub(/(\w)(\d)/, '\2\1')
Kết quả:
"1a"
Đổi thứ tự! Hoạt động nhờ tính năng "capture groups". Dùng groups như \1 cho group 1, \2 cho group 2, v.v. Group tạo bằng ngoặc đơn.
Gsub Nâng Cao Với Block
Thứ thực sự thú vị khi dùng gsub với block. Tại sao? Vì trong block dùng logic quyết định cách thay thế. Thay vì giá trị tĩnh. Ví dụ:
"dog".gsub(/\w+/) { |animal| animal == "dog" ? "cat" : "dog" }
Tìm animal với \w+, nghĩa là "một hoặc nhiều ký tự alphanumeric". Sau đó: Nếu "dog", thay bằng "cat". Nếu từ bất kỳ thứ khác, thay bằng "dog". Logic này không khả thi với giá trị tĩnh, tham số 2 của gsub.
Thay Thế Nhiều Thuật Ngữ Với Hash
Nếu có danh sách thay thế, dùng hash. Như sau:
colors = { "B" => "blue", "G" => "green", "R" => "red" }
Hoạt động như từ điển dịch, key thay bằng value. Ví dụ:
"BBBGR".gsub(/\w/, colors)
Kết quả:
"bluebluebluegreenred"
Đảm bảo đối số 1 khớp key. Ở đây \w khớp ký tự đơn, match "B" thay bằng "blue".
Tóm Tắt
Bạn đã học gsub trong Ruby! Phương thức mạnh cho phép thay thế, substitute ký tự trong chuỗi. Nhiều 용도:
- Xóa ký tự invalid (làm đối số 2 thành chuỗi rỗng)
- Thay placeholder & acronym bằng giá trị đầy đủ
- Dùng pattern & logic thay đổi chuỗi

Bây giờ lượt bạn thực hành method này để kiến thức mới định착. Cảm ơn bạn đã đọc 🙂