Computer >> Máy Tính >  >> Lập trình >> Ruby

Phương thức chuỗi Ruby (Hướng dẫn cơ bản)

Chuỗi là một chuỗi các ký tự.

Chuỗi là các đối tượng nên chúng có rất nhiều phương thức bạn có thể sử dụng để thực hiện mọi việc với chúng.

Trong bài viết này, bạn sẽ khám phá các phương thức chuỗi Ruby hữu ích nhất với các ví dụ!

Nội dung

  • 1 Cách lấy độ dài chuỗi
  • 2 Cách kiểm tra xem một chuỗi có trống không
  • 3 Nội suy chuỗi là gì?
  • 4 Cách trích xuất một chuỗi con
  • 5 Cách tìm ra một chuỗi có chứa một chuỗi khác không
  • 6 Cách tạo chuỗi Ruby
  • 7 Trường hợp Bỏ qua So sánh Chuỗi
  • 8 Cách cắt xén chuỗi và xóa khoảng trắng
  • Tiền tố &hậu tố 9 chuỗi
  • 10 Chuyển đổi một chuỗi thành một mảng ký tự
  • 11 Chuyển đổi một mảng thành một chuỗi
  • 12 Chuyển đổi một chuỗi thành một số nguyên
  • 13 Kiểm tra xem một chuỗi có phải là số không
  • 14 Cách nối các ký tự
  • 15 Lặp lại các ký tự của một chuỗi trong Ruby
  • 16 Cách chuyển một chuỗi thành chữ hoa hoặc chữ thường trong Ruby
  • 17 Cách tạo chuỗi nhiều dòng
  • 18 Cách thay thế văn bản bên trong chuỗi bằng phương pháp Gsub
  • 19 Cách xóa ký tự cuối cùng khỏi chuỗi
  • 20 Cách thay đổi mã hóa chuỗi
  • 21 Ký tự Đếm
  • 22 Tóm tắt
    • 22.1 Có liên quan

Cách lấy độ dài chuỗi

Dễ dàng:

"ruby".size
# 4

Bạn cũng có thể sử dụng length , thay vì size , họ cũng làm điều tương tự.

Cách kiểm tra xem chuỗi có trống không

Chúng tôi xác định một chuỗi rỗng là một chuỗi có độ dài bằng không.

Bạn có thể kiểm tra như thế này :

"".size == 0
# true

Hoặc thậm chí tốt hơn, sử dụng empty? phương pháp.

Ví dụ :

"".empty?
# true

Chuỗi trống là một chuỗi có độ dài bằng 0 hoặc CHỈ được bao gồm các ký tự khoảng trắng.

Nội suy chuỗi là gì?

Nội suy chuỗi cho phép bạn kết hợp các chuỗi với nhau:

name = "Jesus"

puts "Hello #{name}"

Điều mà một số người không biết là bạn có thể có mã thực bên trong nội suy.

Đây là một ví dụ:

puts "The total is #{1+1}"

# "the total is 2"

Ruby gọi to_s trên khối nội suy chuỗi, điều này yêu cầu đối tượng chuyển đổi chính nó thành một chuỗi.

Cách trích xuất chuỗi con

Chuỗi con là một phần nhỏ hơn của chuỗi, sẽ hữu ích nếu bạn chỉ muốn phần cụ thể đó, như phần đầu, phần giữa hoặc phần cuối.

Làm cách nào để bạn có được một chuỗi con trong Ruby?

Một cách là sử dụng chỉ mục bắt đầu và một số ký tự, bên trong dấu ngoặc vuông, được phân tách bằng dấu phẩy.

Như thế này :

string = "abc123"

string[0,3]
# "abc"

string[3,3]
# "123"

Số đầu tiên là chỉ số bắt đầu.

Số thứ hai là số ký tự bạn muốn.

Bạn cũng có thể sử dụng một phạm vi nếu bạn muốn làm điều gì đó như "lấy tất cả các ký tự trừ ký tự cuối cùng".

Ví dụ :

string = "abc123"

string[0..-2]
# "abc12"

Bây giờ, chỉ mục đầu tiên vẫn là chỉ mục bắt đầu, nhưng chỉ mục thứ hai là chỉ mục kết thúc (bao gồm). -2 này là ký tự thứ hai đến ký tự cuối cùng và -1 là phần cuối của chuỗi.

Nếu bạn muốn xóa hoặc thay thế chuỗi con .

Bạn có thể làm điều này:

string[0..2] = ""

p string
# "123"

Rất tốt!

Cách tìm ra chuỗi có chứa chuỗi khác không

Cách dễ nhất để tìm nếu một chuỗi được bao gồm trong một chuỗi khác là gì?

include? phương pháp:

string = "Today is Saturday"

string.include?("Saturday")
# true

Bạn cũng có thể sử dụng index phương pháp:

string = "Today is Sunday"

string.index("day")
# 2

Phương thức này tìm kiếm các từ từng phần và thay vì trả về true hoặc false, nó sẽ cung cấp cho bạn chỉ mục nơi bắt đầu của chuỗi này được tìm thấy.

Trong ví dụ này, index đang tìm "ngày" trong "Hôm nay".

Nếu bạn muốn tìm các mẫu (như tất cả các từ có chứa từ “ngày”), bạn đang tìm cụm từ thông dụng.

Cách tạo chuỗi Ruby

Một cách để đệm một chuỗi là sử dụng rjust phương thức có hai đối số:

binary_string = "1101"
binary_string.rjust(8, "0")

# "00001101"

Nếu bạn muốn chuyển sang bên phải, bạn có thể sử dụng ljust :

binary_string = "1111"
binary_string.ljust(8, "0")

# "11110000"

So sánh trường hợp bỏ qua chuỗi

Vì so sánh chuỗi phân biệt chữ hoa chữ thường nên bạn muốn đảm bảo rằng hai chuỗi bạn đang so sánh ở cùng một trường hợp.

Cách phổ biến để làm điều đó là đặt cả hai vế của phương trình downcase hoặc upcase .

Ví dụ :

lang1 = "ruby"
lang2 = "Ruby"

lang1.upcase == lang2.upcase

Ngoài ra còn có một casecmp? phương pháp so sánh không phân biệt chữ hoa chữ thường nhưng hiếm khi được sử dụng.

Hãy làm theo ví dụ trên.

Cách cắt xén chuỗi &xóa khoảng trắng

Khi đọc dữ liệu từ một tệp hoặc một trang web, bạn có thể thấy mình có thêm khoảng trắng trong chuỗi của mình.

Bạn có thể loại bỏ không gian thừa đó bằng strip phương pháp:

extra_space = "   test    "
extra_space.strip

# "test"

Nếu bạn chỉ muốn xóa khoảng trắng từ một trong các bên (trái / phải), bạn có thể sử dụng lstrip &rstrip thay vào đó.

Tiền tố &Hậu tố chuỗi

Bạn có thể sử dụng start_with? để kiểm tra xem một chuỗi có bắt đầu bằng một tiền tố cụ thể hay không.

Đây là một ví dụ :

string = "ruby programming"

string.start_with? "ruby"
# true

Ngoài ra còn có một end_with? phương pháp:

string = "ruby programming"

string.end_with? "programming"
# true

Ngoài ra, Ruby 2.5 đã giới thiệu delete_prefix &delete_suffix , có thể hữu ích cho bạn.

Đây là một ví dụ :

string = "bacon is expensive"

string.delete_suffix(" is expensive")

# "bacon"

Chuyển đổi một chuỗi thành một mảng ký tự

Việc lấy một chuỗi và chia nhỏ nó thành một mảng ký tự thật dễ dàng với split phương pháp.

Ví dụ :

string = "a b c d"

string.split
# ["a", "b", "c", "d"]

Theo mặc định split sẽ sử dụng một khoảng trắng làm ký tự phân cách, nhưng bạn có thể chuyển một đối số vào phương thức này để chỉ định một dấu phân tách khác.

Dưới đây là cách bạn có thể chia danh sách các giá trị được phân tách bằng dấu phẩy (CSV):

csv = "a,b,c,d"

string.split(",")
# ["a", "b", "c", "d"]

Nhưng nếu bạn đang làm việc với dữ liệu CSV cụ thể, bạn có thể muốn xem xét sử dụng lớp CSV từ thư viện chuẩn. Lớp này có thể thực hiện những việc như đọc tiêu đề cột, vì vậy nó giúp bạn làm mọi thứ dễ dàng hơn.

Chuyển đổi một mảng thành một chuỗi

Nếu bạn muốn lấy một mảng chuỗi và nối các chuỗi này thành một chuỗi lớn, bạn có thể sử dụng join phương pháp.

Ví dụ :

arr = ['a', 'b', 'c']

arr.join
# "abc"

Cũng có thể chuyển một đối số vào join , đối số này là dấu phân tách ký tự.

Ví dụ :

arr = ['a', 'b', 'c']

arr.join("-")
# "a-b-c"

Chuyển đổi chuỗi thành số nguyên

Nếu bạn muốn chuyển đổi một chuỗi như "49" vào Số nguyên 49 bạn có thể sử dụng to_i phương pháp.

Ví dụ :

"49".to_i

Lưu ý rằng nếu bạn thử điều này với một chuỗi không chứa số thì bạn sẽ nhận được 0 .

Ví dụ :

"a".to_i
# 0

Kiểm tra xem chuỗi có phải là số hay không

Bạn có muốn biết liệu một chuỗi chỉ được tạo bởi các số nguyên không?

Bạn có thể làm điều này :

"123".match?(/\A-?\d+\Z/)
# true

"123bb".match?(/\A-?\d+\Z/)
# false

Lưu ý :Đối sánh match? phương thức được giới thiệu trong Ruby 2.4, bạn có thể sử dụng match (không có dấu chấm hỏi) trên các phiên bản cũ hơn.

Mã này sử dụng một biểu thức chính quy, hãy để tôi dịch nó cho bạn:

“Từ đầu chuỗi (\A ) kiểm tra xem có dấu gạch ngang tùy chọn không (-? , đối với số âm), sau đó đảm bảo có một số số trong đó (\d+ ) &không có gì khác cho đến cuối chuỗi (\Z ). ”

Cách nối các ký tự

Bạn có thể tạo một chuỗi lớn từ các chuỗi nhỏ hơn bằng cách nối các ký tự vào một chuỗi hiện có. Chúng tôi cũng gọi đây là nối chuỗi .

Đây là cách thực hiện điều đó bằng cách sử dụng << phương pháp:

string = ""

string << "hello"
string << " "
string << "there"

# "hello there"

Không sử dụng += để nối chuỗi vì điều đó sẽ tạo ra một chuỗi mới mỗi lần, điều này không tốt cho hiệu suất!

Lặp lại các ký tự của một chuỗi trong Ruby

Đôi khi, việc làm việc với các ký tự riêng lẻ của một chuỗi rất hữu ích.

Một cách để làm điều đó là sử dụng each_char phương pháp:

"rubyguides".each_char { |ch| puts ch }

Bạn cũng có thể sử dụng các ký tự chars phương thức để chuyển chuỗi thành một mảng ký tự. Sau đó, bạn có thể sử dụng each trên mảng này để lặp lại.

Ví dụ :

array_of_characters = "rubyguides".chars
# ["r", "u", "b", "y", "g", "u", "i", "d", "e", "s"]

Cách chuyển một chuỗi thành chữ hoa hoặc chữ thường trong Ruby

Nếu bạn muốn chuyển đổi một chuỗi thành tất cả các chữ hoa, bạn có thể sử dụng upcase phương pháp.

Ví dụ :

"abcd".upcase
# "ABCD"

Và nếu bạn muốn chuyển đổi sang chữ thường, bạn có thể sử dụng downcase phương pháp.

Ví dụ :

"ABCD".downcase
# "abcd"

Cách tạo chuỗi nhiều dòng

Bạn có thể tạo chuỗi nhiều dòng theo hai cách khác nhau.

Một là bằng cách sử dụng heredocs:

b = <<-STRING
aaa
bbb
ccc
STRING

Và một cách khác là bằng cách sử dụng %Q :

a = %Q(aaa
bbb
ccc
)

Cách thay thế văn bản bên trong chuỗi bằng phương pháp Gsub

Nếu bạn muốn thay thế văn bản bên trong một chuỗi, hãy sử dụng phương thức gsub.

Hãy thay từ "chó" bằng "mèo":

string = "We have many dogs"

string.gsub("dogs", "cats")

# "We have many cats"

Nếu bạn muốn xóa chuỗi, hãy sử dụng chuỗi trống là đối số thứ 2.

Ví dụ :

string = "abccc"

string.gsub("c", "")

# "ab"

Bây giờ :

gsub phương thức trả về một chuỗi mới.

Nếu bạn muốn áp dụng các thay đổi cho chuỗi ban đầu, bạn có thể sử dụng gsub! phương pháp.

Phương pháp gsub cũng lấy biểu thức chính quy làm đối số để bạn có thể thay thế các mẫu thay vì các từ chính xác.

Đây là một ví dụ :

string = "We have 3 cats"

string.gsub(/\d+/, "5")

# "We have 5 cats"

Điều này thay thế tất cả các số (\d+ ) trong chuỗi có số 5 .

Một cách nữa để sử dụng phương pháp này, với một khối:

title = "the lord of the rings"

title.gsub(/\w+/) { |word| word.capitalize }
# "The Lord Of The Rings"

Còn về gsub so với sub ?

Chà, sub giống với gsub , nhưng nó sẽ chỉ thay thế kết quả phù hợp đầu tiên.

Gsub thay thế TẤT CẢ các trận đấu.

Cách xóa ký tự cuối cùng khỏi chuỗi

Nếu bạn đang yêu cầu người dùng nhập một số đầu vào (sử dụng phương thức Kernel # get) thì bạn sẽ có một ký tự dòng mới (\n ) ở cuối chuỗi của bạn, điều này ngăn bạn so sánh chuỗi trực tiếp.

Ví dụ :

puts "What's your name?"
name = gets

# type something...

Cách tốt nhất để xóa ký tự dòng mới thừa đó (\n ) là sử dụng phương pháp chomp .

Ví dụ :

name = gets.chomp

Vì phương thức chomp trong Ruby 2.3 có một đối số tùy chọn cho phép bạn xóa các ký tự mà bạn muốn xóa.

Ví dụ :

"abcd?".chomp("?")
# "abcd"

Và nếu ký tự không có ở đó, nó sẽ trả về chuỗi ban đầu.

Cách thay đổi mã hóa chuỗi

Các chuỗi được lưu trữ dưới dạng một chuỗi các byte, chúng được chuyển thành các ký tự mà bạn có thể thấy dựa trên mã hóa của chúng.

Ví dụ:số 65 trong bảng mã ASCII đại diện cho chữ "A".

Nhưng cũng có nhiều bảng mã phức tạp hơn, như UTF-8, cho phép bạn biểu diễn các ký tự từ các ngôn ngữ khác nhau (tiếng Trung, v.v.) và thậm chí cả biểu tượng cảm xúc.

Để tìm ra kiểu mã hóa hiện tại cho một chuỗi, bạn có thể sử dụng encoding phương pháp.

"abc".encoding

# Encoding:UTF-8

Khi đọc tệp từ đĩa hoặc tải xuống một số dữ liệu từ trang web, bạn có thể gặp sự cố mã hóa.

Bạn thường có thể khắc phục sự cố đó bằng cách thực thi encoding .

Như thế này :

"abc".force_encoding("UTF-8")

Đếm ký tự

Bạn có thể đếm số lần một ký tự xuất hiện trong một chuỗi bằng cách sử dụng count phương pháp.

Ví dụ:

str = "aaab"

str.count("a")
# 3

str.count("b")
# 1

Tóm tắt

Bạn đã học về nhiều phương thức chuỗi , như nối &tách để chia nhỏ các chuỗi thành mảng, gsub để thay thế văn bản bên trong chuỗi &dải để cắt bớt khoảng trắng thừa.

Vì bạn có thể muốn tham khảo trang này sau này, hãy nhớ đánh dấu trang và chia sẻ nó với tất cả bạn bè Ruby của bạn 🙂

Cảm ơn vì đã đọc!