17 method xử lý chuỗi hữu ích trong Ruby
Bài đăng này đã không được cập nhật trong 3 năm
Mỗi dòng code bạn không viết là một dòng code bạn không phải duy trì
Thao tác với String là công việc mà các lập trình viên làm hàng ngày. Trong bài đăng này, tôi sẽ thảo luận về 17 phương thức chuỗi hiệu quả được cung cấp bởi Ruby String Class, điều này sẽ giúp bạn tiết kiệm thời gian trong việc xử lý các chuỗi.
1. Lặp lại từng kí tự của một chuỗi
Thường thì chúng ta cần lặp qua các chuỗi để xử lý các ký tự. Ví dụ: bạn có thể muốn in tất cả các kí tự có trong chuỗi
str = "abcdeU"
temp = ""
str.each_char do |char|
puts char if ['a','e','i','o','u'].include? char.downcase
end
# a
# e
# U
2. Chuyển đổi một chuỗi thành một mảng ký tự
Để chuyển đổi một chuỗi thành một mảng, chúng ta có thể sử dụng str.chars, là cách viết tắt của str.each_char.to_a.
char_array = "abcdeABCDE".chars
# ["a", "b", "c", "d", "e", "A", "B", "C", "D", "E"]
Bây giờ chúng ta có một mảng, chúng ta có thể sử dụng bất kỳ phương thức nào của mảng. Ví dụ: phương thức nối chuyển đổi từng phần tử của mảng thành Chuỗi, được phân tách bằng dấu phân cách đã cho.
char_array.map { |c| c.downcase }.join(', ')
# "a, b, c, d, e, a, b, c, d, e"
3. Lấy độ dài của một chuỗi
Mình nghĩ nghĩ đây là phương pháp được sử dụng nhiều nhất. Rất hữu ích khi bạn muốn kiểm tra độ dài chuỗi trước khi chèn nó vào bảng cơ sở dữ liệu. Tùy thuộc vào sở thích của bạn, bạn có thể chọn một trong hai.
"HELLO World".length
# 11
"HELLO World".size
# 11
4. Nhận số lượng ký tự của một chuỗi
str.count nhận một hoặc nhiều bộ ký tự làm tham số. Sau đó, chúng ta lấy phần giao nhau của các bộ này để có được bộ ký tự cuối cùng.
"look up!".count("o")
# 2
"look up!".count("m")
# 0
"abcdef".count("a-c", "c-f")
# 1
Chúng ta có thể sử dụng nó để đếm nhiều ký tự, ví dụ thử đếm các kí tự thường
"abcdeUUU".downcase.count("aeiou")
# 5
5. Đảo ngược một chuỗi
Đảo ngược chuỗi có thể hữu ích, chẳng hạn như khi bạn muốn kiểm tra xem một chuỗi có phải là số nguyên tố Palindrome hay không
str = "Anna"
str.reverse
# "annA"
puts "palindrome" if str.downcase == str.downcase.reverse
# palindrome
# eql? is a synonym for ==
puts "palindrome" if str.downcase.eql?(str.downcase.reverse)
# palindrome
6. Tìm kiếm một hoặc nhiều ký tự của một chuỗi
str.include? trả về true nếu có chuỗi hoặc ký tự và trả về false nếu không
"hEllo wOrlD".include?("w")
# true
"hEllo wOrlD".include?("1")
# false
7. Thay thế các ký tự trong một chuỗi
Thay thế một hoặc nhiều ký tự của chuỗi là một cách tốt để làm sạch hoặc định dạng dữ liệu. str.gsub thay thế tất cả các lần xuất hiện bằng các chuỗi được cung cấp. Ở đây đối số đầu tiên đại diện cho bộ ký tự mà chúng ta muốn thay thế, à đối số thứ hai là các ký tự thay thế được đặt.
"Red, Red and Blue".gsub("Red", "Orange")
"Orange, Orange and Blue"
Nếu bạn muốn thay thế lần xuất hiện đầu tiên, hãy sử dụng str.sub.
"Red, Red and Blue".sub("Red", "Orange")
"Orange, Red and Blue"
8. Tách một chuỗi
Tách một chuỗi dựa trên dấu phân cách (mặc định là khoảng trắng) hoặc mẫu nào đó.
sentence = "There Is No Spoon"
words = sentence.split
# ["There", "Is", "No", "Spoon"]
sentence = "There_Is_No_Spoon"
words = sentence.split("_")
# ["There", "Is", "No", "Spoon"]
Bạn có thể giới hạn số lần phân tách bằng cách cung cấp đối số thứ hai
sentence = "June 27,June 26,June 25"
words = sentence.split(/,/, 2)
# ["June 27", "June 26,June 25"]
9. Cắt một chuỗi
str.trim sẽ xóa bất kỳ ký tự đầu và cuối nào sau đây: null("\x00"), horizontal tab("\t"), line feed(\n), vertical tab("\v"), form feed(f), carriage return(\r), space(" ").
" hEllo WOrlD \n\t\v\r ".strip
# "hEllo WOrlD"
10. Cắt ký tự cuối cùng của một chuỗi
str.chomp loại bỏ một ký tự ở cuối khi được cung cấp dấu phân tách bản ghi hoặc các ký tự xuống dòng (\ n, \ r và \ r \ n).
"...hello...world...".chomp(".")
# "...hello...world.."
"...hello...world".chomp(".")
"...hello...world"
"...hello...world...\n".chomp(".")
# "...hello...world...\n"
"...hello...world...\n".chomp
# "...hello...world..."
"...hello...world...\r".chomp
# "...hello...world..."
"...hello...world...\r\n".chomp
# "...hello...world..."
"...hello...world...\n\r".chomp
"...hello...world...\n"
11. Thêm một chuỗi trước một chuỗi khác
Nối một hoặc nhiều ký tự vào một chuỗi ở đầu chuỗi.
a = "world"
a.prepend("hello ")
# "hello world"
12. Chèn một chuỗi
Thêm một hoặc nhiều ký tự vào một vị trí cụ thể của một chuỗi.
a = "hello"
a.insert(a.length, " world")
# "hello world"
13. Các phương pháp thay đổi trường hợp của một chuỗi
Hàm str.downcase sẽ chuyển đổi từng ký tự của chuỗi thành chữ thường.
"HELLO World".downcase
# "hello world"
str.upcase sẽ chuyển đổi mỗi ký tự của một chuỗi thành chữ hoa
"hello worlD".upcase
# "HELLO WORLD"
Hàm str.capitalize sẽ chuyển đổi ký tự đầu tiên của chuỗi thành chữ hoa và phần còn lại thành chữ thường
"hEllo wOrlD".capitalize
# "Hello world"
str.swapcase sẽ hoán đổi ký tự viết hoa thành ký tự thường và ký tự viết thường thành ký tự hoa của một chuỗi.
"hEllo WOrlD".swapcase
# "HeLLO woRLd"
14. Thêm chuỗi
Một trong những hoạt động string thường xuyên là nối. Để làm điều đó, chúng ta có thể sử dụng str.concat hoặc <<.
str1 = "hello"
str2 = "world"
str1.concat(" ").concat(str2)
puts "#{str1}"
# "hello world"
# << is same as concat
str1 = "hello"
str2 = "world"
str1 << " " << str2
puts "#{str1}"
# "hello world"
15. Nhận chuỗi con
Phương thức str.slice dùng khi bạn muốn một phần cụ thể của một Chuỗi, nó trả về một chuỗi con.
str = "hello world"
puts "#{str.slice(0, 5)}"
# hello
16. Tìm một chuỗi với tiền tố và hậu tố đã cho
Chúng ta có thể kiểm tra xem một chuỗi bắt đầu hay kết thúc bằng một chuỗi.
str = "Mr. Leonardo"
str.start_with?("Mr.")
# true
str = "The quick brown fox jumps over the lazy dog."
str.end_with?(".")
# true
17. Kiểm tra chuỗi trống
Có lẽ một phương pháp được sử dụng thường xuyên nhất là str.empty, có thể được sử dụng để xác thực dữ liệu
output = ""
output.empty?
# true
output = " "
output.empty?
# false
Tổng kết
Giống như các ngôn ngữ khác, Ruby có các thư viện các phương thức hỗ trợ tối ưu hiệu xuất. Sử dụng 17 hàm nay sẽ giúp bạn tiết kiệm được rất nhiều thời gian. Happy coding!
Tài liệu tham khảo
All rights reserved