Arduino - วัตถุสตริง
สตริงประเภทที่สองที่ใช้ในการเขียนโปรแกรม Arduino คือ String Object
วัตถุคืออะไร?
ออบเจ็กต์คือโครงสร้างที่มีทั้งข้อมูลและฟังก์ชัน ออบเจ็กต์ String สามารถสร้างได้เช่นเดียวกับตัวแปรและกำหนดค่าหรือสตริง อ็อบเจ็กต์ String ประกอบด้วยฟังก์ชัน (ซึ่งเรียกว่า "วิธีการ" ในการเขียนโปรแกรมเชิงวัตถุ (OOP)) ซึ่งทำงานกับข้อมูลสตริงที่มีอยู่ในอ็อบเจ็กต์ String
ภาพร่างและคำอธิบายต่อไปนี้จะทำให้ชัดเจนว่าวัตถุคืออะไรและใช้วัตถุ String อย่างไร
ตัวอย่าง
void setup() {
String my_str = "This is my string.";
Serial.begin(9600);
// (1) print the string
Serial.println(my_str);
// (2) change the string to upper-case
my_str.toUpperCase();
Serial.println(my_str);
// (3) overwrite the string
my_str = "My new string.";
Serial.println(my_str);
// (4) replace a word in the string
my_str.replace("string", "Arduino sketch");
Serial.println(my_str);
// (5) get the length of the string
Serial.print("String length is: ");
Serial.println(my_str.length());
}
void loop() {
}
ผลลัพธ์
This is my string.
THIS IS MY STRING.
My new string.
My new Arduino sketch.
String length is: 22
วัตถุสตริงถูกสร้างและกำหนดค่า (หรือสตริง) ที่ด้านบนของร่าง
String my_str = "This is my string." ;
สิ่งนี้สร้างวัตถุ String ที่มีชื่อ my_str และให้ค่าเป็น "นี่คือสตริงของฉัน"
สิ่งนี้สามารถเปรียบเทียบได้กับการสร้างตัวแปรและกำหนดค่าให้กับตัวแปรเช่นจำนวนเต็ม -
int my_var = 102;
ภาพร่างทำงานในลักษณะต่อไปนี้
การพิมพ์สตริง
สามารถพิมพ์สตริงลงในหน้าต่าง Serial Monitor ได้เช่นเดียวกับสตริงอาร์เรย์อักขระ
แปลง String เป็น Upper-case
my_str อ็อบเจ็กต์สตริงที่สร้างขึ้นมีฟังก์ชันหรือวิธีการหลายอย่างที่สามารถดำเนินการได้ วิธีการเหล่านี้เรียกใช้โดยใช้ชื่อวัตถุตามด้วยตัวดำเนินการจุด (.) จากนั้นชื่อของฟังก์ชันที่จะใช้
my_str.toUpperCase();
toUpperCase() ฟังก์ชันทำงานกับสตริงที่มีอยู่ในไฟล์ my_strซึ่งเป็นประเภท String และแปลงข้อมูลสตริง (หรือข้อความ) ที่วัตถุมีเป็นอักขระตัวพิมพ์ใหญ่ รายการฟังก์ชันที่คลาส String มีอยู่ในการอ้างอิง Arduino String ในทางเทคนิค String เรียกว่าคลาสและใช้ในการสร้างวัตถุ String
เขียนทับสตริง
ตัวดำเนินการการกำหนดใช้เพื่อกำหนดสตริงใหม่ให้กับ my_str วัตถุที่แทนที่สตริงเก่า
my_str = "My new string." ;
ไม่สามารถใช้ตัวดำเนินการกำหนดกับสตริงอาร์เรย์อักขระ แต่ใช้ได้กับอ็อบเจ็กต์ String เท่านั้น
การแทนที่ Word ใน String
ฟังก์ชัน replace () ใช้เพื่อแทนที่สตริงแรกที่ส่งผ่านไปโดยสตริงที่สองที่ส่งผ่านไป แทนที่ () เป็นฟังก์ชันอื่นที่สร้างขึ้นในคลาส String ดังนั้นจึงพร้อมใช้งานบนอ็อบเจ็กต์ String my_str
รับความยาวของสตริง
การรับความยาวของสตริงทำได้อย่างง่ายดายโดยใช้ length () ในภาพร่างตัวอย่างผลลัพธ์ที่ส่งคืนโดย length () จะถูกส่งไปยัง Serial.println () โดยตรงโดยไม่ต้องใช้ตัวแปรกลาง
เมื่อใดควรใช้ String Object
อ็อบเจ็กต์ String ใช้งานง่ายกว่าอาร์เรย์อักขระสตริง อ็อบเจ็กต์มีฟังก์ชันในตัวที่สามารถดำเนินการกับสตริงได้หลายอย่าง
ข้อเสียเปรียบหลักของการใช้ String object คือใช้หน่วยความจำจำนวนมากและสามารถใช้หน่วยความจำ Arduinos RAM ได้อย่างรวดเร็วซึ่งอาจทำให้ Arduino ค้างขัดข้องหรือทำงานโดยไม่คาดคิด หากภาพร่างบน Arduino มีขนาดเล็กและ จำกัด การใช้วัตถุก็ไม่น่ามีปัญหา
สตริงอาร์เรย์อักขระใช้งานยากกว่าและคุณอาจต้องเขียนฟังก์ชันของคุณเองเพื่อดำเนินการกับสตริงประเภทนี้ ข้อดีคือคุณสามารถควบคุมขนาดของสตริงอาร์เรย์ที่คุณสร้างขึ้นได้ดังนั้นคุณสามารถทำให้อาร์เรย์มีขนาดเล็กเพื่อประหยัดหน่วยความจำ
คุณต้องแน่ใจว่าคุณไม่ได้เขียนเกินส่วนท้ายของขอบเขตอาร์เรย์ด้วยสตริงอาร์เรย์ อ็อบเจ็กต์ String ไม่มีปัญหานี้และจะดูแลขอบเขตสตริงให้คุณหากมีหน่วยความจำเพียงพอที่จะใช้งานได้ อ็อบเจ็กต์ String สามารถพยายามเขียนไปยังหน่วยความจำที่ไม่มีอยู่เมื่อหน่วยความจำหมด แต่จะไม่เขียนต่อท้ายสตริงที่ทำงานอยู่
สถานที่ใช้สตริง
ในบทนี้เราได้ศึกษาเกี่ยวกับสตริงลักษณะการทำงานในหน่วยความจำและการทำงานของมัน
การใช้สตริงในทางปฏิบัติจะกล่าวถึงในส่วนถัดไปของหลักสูตรนี้เมื่อเราศึกษาวิธีรับอินพุตของผู้ใช้จากหน้าต่าง Serial Monitor และบันทึกอินพุตเป็นสตริง