Strings là một trong những kiểu dữ liệu quan trọng nhất trong Ruby và được sử dụng rộng rãi trong hầu hết các ứng dụng. Trong bài này, chúng ta sẽ tìm hiểu chi tiết về Strings trong Ruby, bao gồm cách định nghĩa, thao tác và sử dụng chúng một cách hiệu quả.
Expression Substitution (Nội suy biểu thức)
Trong Ruby, bạn có thể nhúng biểu thức vào trong một string bằng cách sử dụng cú pháp #{}
. Điều này cho phép bạn tạo ra các chuỗi động một cách dễ dàng.
ruby
name = "Alice"
age = 25
puts "My name is #{name} and I'm #{age} years old."
# Output: My name is Alice and I'm 25 years old.
Bạn cũng có thể sử dụng nội suy biểu thức để thực hiện các phép tính hoặc gọi phương thức bên trong string.
ruby
x = 10
y = 20
puts "The sum of #{x} and #{y} is #{x + y}."
# Output: The sum of 10 and 20 is 30.
General Delimited Strings
Ngoài việc sử dụng dấu nháy đơn hoặc dấu nháy kép để định nghĩa một string, Ruby cũng hỗ trợ cú pháp %q
và %Q
để tạo ra các chuỗi với các ký tự đặc biệt.
ruby
puts %q(This is a single-quoted string with 'quotes' inside.)
# Output: This is a single-quoted string with 'quotes' inside.
puts %Q(This is a double-quoted string with "quotes" inside.)
# Output: This is a double-quoted string with "quotes" inside.
Bạn cũng có thể sử dụng các ký tự khác làm dấu phân cách cho chuỗi, miễn là chúng khớp nhau.
ruby
puts %/This is a string delimited by forward slashes./
# Output: This is a string delimited by forward slashes.
Escape Characters (Ký tự thoát)
Trong Ruby, bạn có thể sử dụng ký tự thoát \
để đưa các ký tự đặc biệt vào trong string. Ví dụ, \n
để tạo ra một dòng mới, \t
để tạo ra một tab, và \"
để đưa dấu nháy kép vào trong string.
ruby
puts "Hello\nWorld!"
# Output:
# Hello
# World!
puts "This is a tab:\tHello!"
# Output: This is a tab: Hello!
puts "She said, \"Hello, World!\""
# Output: She said, "Hello, World!"
Character Encoding
Ruby hỗ trợ nhiều bảng mã ký tự khác nhau, bao gồm ASCII, UTF-8, và nhiều bảng mã khác. Bạn có thể xác định bảng mã ký tự cho một string bằng cách sử dụng phương thức encode
hoặc force_encoding
.
ruby
string = "Ceci n'est pas une pipe."
puts string.encoding
# Output: UTF-8
ascii_string = string.encode('ASCII', invalid: :replace, undef: :replace, replace: '?')
puts ascii_string
# Output: Ceci n'est pas une pipe?
String Built-in Methods
Ruby cung cấp rất nhiều phương thức built-in để thao tác với strings, bao gồm:
length
,size
: Trả về độ dài của string.upcase
,downcase
: Chuyển đổi string thành chữ hoa hoặc chữ thường.reverse
: Đảo ngược thứ tự các ký tự trong string.split
: Tách string thành một mảng các chuỗi con dựa trên một ký tự phân cách.gsub
: Thay thế tất cả các lần xuất hiện của một mẫu trong string bằng một chuỗi khác.strip
,lstrip
,rstrip
: Loại bỏ khoảng trắng ở đầu, cuối hoặc cả hai đầu của string.
Ví dụ:
ruby
string = " Hello, World! "
puts string.length # Output: 19
puts string.strip.length # Output: 13
puts string.upcase # Output: " HELLO, WORLD! "
puts string.reverse # Output: " !dlroW ,olleH "
words = string.strip.split # Output: ["Hello,", "World!"]
String unpack Directives
Ruby cung cấp một phương thức unpack
cho phép bạn giải mã các chuỗi nhị phân thành các giá trị khác nhau. Phương thức này sử dụng các chỉ thị đóng gói (unpack directives) để xác định cách giải mã chuỗi.
ruby
binary_string = "ABC\x01\x02\x03"
array = binary_string.unpack('a3CC')
puts array.inspect
# Output: ["ABC", 1, 2, 3]
Trong ví dụ trên, chỉ thị a3
giải mã 3 ký tự đầu tiên của chuỗi thành một chuỗi con, và CC
giải mã hai byte tiếp theo thành hai số nguyên.
Kết luận
Strings là một phần không thể thiếu trong lập trình Ruby, và cung cấp nhiều tính năng mạnh mẽ để thao tác và xử lý chuỗi ký tự. Bằng cách sử dụng các tính năng như nội suy biểu thức, chuỗi có dấu phân cách tùy ý, ký tự thoát, và các phương thức built-in, bạn có thể viết mã Ruby một cách hiệu quả và dễ dàng hơn. Hãy tiếp tục khám phá và thực hành với Strings trong Ruby để trở thành một lập trình viên giỏi hơn.