การลบตัวอักษรที่ตรงกับรูปแบบ

Arduino:
การลบตัวอักษรที่ตรงกับรูปแบบ

วิธีการ:

ลองนึกถึงวิธีลบตัวเลขทั้งหมดออกจากสตริงของเรา เรามีสตริงที่มีตัวเลขแบบสุ่ม และเราต้องการผลลัพธ์ที่สะอาด เฉพาะตัวอักษรเท่านั้น

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

  // สตริงต้นแบบของเราที่มีตัวเลข
  String stringWithNumbers = "Ar3du1n0 1s aw3som3!";
  String cleanedString = deletePattern(stringWithNumbers, "0123456789");

  // พิมพ์สตริงที่ทำความสะอาดแล้ว
  Serial.println(cleanedString);
}

void loop() {
  // ไม่มีอะไรต้องทำที่นี่
}

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

หากคุณอัปโหลดและรันสิ่งนี้บน Arduino ของคุณ คุณจะเห็นสตริงที่ไม่มีตัวเลขในตัวตรวจสอบอนุกรม:

Arduino is awesome!

วิเคราะห์ลึก

การลบอักขระที่ตรงกับรูปแบบเฉพาะไม่ใช่แนวคิดใหม่ ภาษาการเขียนโปรแกรมแต่ละยุคมีฟังก์ชันสำหรับการประมวลผลและจัดการสตริง ใน Arduino แม้ว่าฟังก์ชันการทำงานระดับสูงสำหรับการลบรูปแบบไม่มีอยู่โดยธรรมชาติ เราสามารถสร้างตรรกะที่กำหนดเองของเราเอง เช่นในฟังก์ชัน deletePattern ข้างบน

มีทางเลือกในภาษาอื่น ๆ เช่น regex (regular expressions) ใน Python หรือ JavaScript แต่สภาพแวดล้อมการเขียนโค้ดของ Arduino นั้นพื้นฐานมาก ไม่รวมถึงฟังก์ชัน regex มาตรฐาน ส่วนหนึ่งเป็นเพราะความสามารถในการประมวลผลและหน่วยความจำที่จำกัด

ภายใต้อุปกรณ์, ฟังก์ชัน deletePattern ของเราทำงานวนผ่านสตริงรูปแบบ ใช้วิธีการ String.replace() เพื่อค้นหาตัวละครปัจจุบัน และแทนที่มันด้วยสตริงว่าง ดังนั้น “ลบ” ออกจากสตริงต้นฉบับของเรา

ดูเพิ่มเติม