Khóa học ruby

Strings trong Ruby

0 phút đọc

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.

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.

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%Q để tạo ra các chuỗi với các ký tự đặc biệt.

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.

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.

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.

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ụ:

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.

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.

Avatar
Được viết bởi

TechMely Team

Gợi ý câu hỏi phỏng vấn

entry

Ruby on Rails là gì?

entry

Is there an equivalent of “continue” in Ruby?

entry

Is everything in Ruby an object?

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào

Khoá học javascript từ cơ bản đến chuyên sâuYoutube Techmely