Xóa các ký tự phù hợp với một mẫu

Arduino:
Xóa các ký tự phù hợp với một mẫu

Cách thực hiện:

Giả sử chúng ta muốn loại bỏ tất cả các chữ số số học khỏi chuỗi của chúng ta. Chúng ta có một chuỗi với một số chữ số ngẫu nhiên, và chúng ta đang hướng tới kết quả chỉ gồm chữ cái.

void setup() {
  Serial.begin(9600);

  // Chuỗi ban đầu của chúng ta có chứa số
  String stringWithNumbers = "Ar3du1n0 1s aw3som3!";
  String cleanedString = deletePattern(stringWithNumbers, "0123456789");

  // In chuỗi đã được làm sạch
  Serial.println(cleanedString);
}

void loop() {
  // Không có gì để thực hiện ở đây
}

String deletePattern(String str, String pattern) {
  for (unsigned int i = 0; i < pattern.length(); i++) {
    str.replace(String(pattern[i]), "");
  }
  return str;
}

Nếu bạn tải và chạy điều này trên Arduino của mình, bạn sẽ thấy chuỗi không có số trong màn hình serial:

Arduino is awesome!

Sâu hơn nữa

Việc loại bỏ ký tự khớp với một mẫu cụ thể không phải là một khái niệm mới. Các ngôn ngữ lập trình sớm đã có các hàm để xử lý và thao tác chuỗi. Trong Arduino, mặc dù không tồn tại một hàm cấp cao cho việc xóa mẫu một cách tự nhiên, chúng ta có thể tạo ra lô-gic tùy chỉnh của mình, như trong hàm deletePattern ở trên.

Có những lựa chọn thay thế trong các ngôn ngữ khác, như regex (biểu thức chính quy) trong Python hoặc JavaScript, nhưng môi trường lập trình của Arduino cơ bản hơn. Nó không bao gồm các hàm regex ngay từ đầu, chủ yếu do sức mạnh xử lý và bộ nhớ giới hạn của nó.

Bên dưới lớp vỏ, hàm deletePattern của chúng ta lặp qua chuỗi mẫu của chúng ta, sử dụng phương thức String.replace() để tìm kiếm ký tự hiện tại, và thay thế nó bằng một chuỗi trống, do đó “xóa” nó khỏi chuỗi gốc của chúng ta.

Xem thêm