Menu
CoddyTech

Lặp qua các ký tự (strsplit

Thuộc phần Kiến thức nền tảng trong hành trình R của Coddy. Bài học 65 trên 78.

Nếu cần xử lý từng ký tự trong chuỗi riêng lẻ thì sao? Khác với vector, bạn không thể lặp trực tiếp qua các ký tự trong chuỗi bằng R. Hàm (function) strsplit() giải quyết việc này bằng cách tách chuỗi thành một vector ký tự.

Hàm strsplit() nhận hai đối số: chuỗi cần tách và dấu phân cách. Để tách thành từng ký tự riêng lẻ, hãy dùng chuỗi rỗng "" làm dấu phân cách:

word <- "hello"
chars <- strsplit(word, "")[[1]]
print(chars)

Đầu ra:

[1] "h" "e" "l" "l" "o"

Hãy chú ý đến [[1]] ở cuối. Đó là vì strsplit() trả về một danh sách, và chúng ta cần trích xuất phần tử đầu tiên để lấy mảng ký tự. Khi đã có các ký tự dưới dạng mảng, bạn có thể lặp qua chúng bằng những kỹ thuật bạn đã học:

word <- "R"
chars <- strsplit(word, "")[[1]]
for (char in chars) {
  print(char)
}

Đầu ra:

[1] "R"

Kỹ thuật này rất cần thiết cho các tác vụ như đếm các ký tự cụ thể, đảo ngược chuỗi hoặc xác thực đầu vào theo từng ký tự.

challenge icon

Thử thách

Dễ

Bạn sẽ nhận được một dòng đầu vào chứa một từ, ví dụ: programming.

Dùng strsplit() để tách chuỗi (string) thành từng ký tự (character):

  1. Tách từ đầu vào thành một vector ký tự
  2. Lặp qua từng ký tự trong vector
  3. Đếm số lần chữ cái "a" xuất hiện trong từ (phân biệt chữ hoa và chữ thường)
  4. Dùng print() để in mỗi ký tự trên một dòng riêng
  5. Sau vòng lặp, dùng cat() để in số đếm theo định dạng: Count of 'a': X, theo sau là ký tự xuống dòng

Ví dụ, nếu đầu vào là:

banana

Đầu ra sẽ là:

[1] "b"
[1] "a"
[1] "n"
[1] "a"
[1] "n"
[1] "a"
Count of 'a': 3

Giải thích: Từ "banana" được tách thành các ký tự c("b", "a", "n", "a", "n", "a"). Mỗi ký tự được in ra, và chữ cái "a" xuất hiện 3 lần.

Tự làm thử

# Đọc đầu vào
con <- file("stdin", "r")
word <- suppressWarnings(readLines(con, n = 1))

# Khởi tạo biến đếm cho chữ cái 'a'
count_a <- 0

# TODO: Viết code bên dưới
# 1. Dùng strsplit() để tách từ thành từng ký tự
# 2. Duyệt qua từng ký tự
# 3. In từng ký tự bằng print()
# 4. Đếm số lần 'a' xuất hiện

# In ra số lần xuất hiện của 'a'
cat("Count of 'a': ", count_a, "\n", sep = "")
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Kiến thức nền tảng

Tự luyện tập: Trình biên dịch R online