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()
เพื่อค้นหาตัวละครปัจจุบัน และแทนที่มันด้วยสตริงว่าง ดังนั้น “ลบ” ออกจากสตริงต้นฉบับของเรา
ดูเพิ่มเติม
- การจัดการสตริงด้วย Arduino: https://www.arduino.cc/reference/en/language/variables/data-types/string/functions/
- Arduino String reference: https://www.arduino.cc/reference/en/language/variables/data-types/stringobject/
- เรียนรู้เพิ่มเติมเกี่ยวกับการแทนที่สตริง: http://www.cplusplus.com/reference/string/string/replace/