Arduino - String 物件
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." ;
這將建立一個名為 my_str
的 String 物件,併為其賦予值 This is my string.
。
這可以與建立變數併為其賦值(如整數)進行比較 -
int my_var = 102;
草圖以下列方式工作。
列印字串
該字串可以像字串陣列一樣列印到 Serial Monitor 視窗。
將字串轉換為大寫字母
建立的字串物件 my_str
具有許多可在其上操作的函式或方法。通過使用物件名稱後跟點運算子 .
,然後使用要使用的函式的名稱來呼叫這些方法。
my_str.toUpperCase();
toUpperCase()
函式操作包含在 my_str 物件中的字串,它將該物件中的字元轉換為大寫字元。可以在 Arduino String 參考中找到 String 類包含的函式列表。從技術上講,String 稱為類,用於建立 String 物件。
覆蓋一個字串
賦值運算子用於將新字串分配給 my_str 物件,以替換舊字串。
my_str = "My new string." ;
賦值運算子不能用於字元陣列字串,但僅適用於 String 物件。
替換字串中的單詞
replace()
函式用於將傳遞給它的第一個字串替換為傳遞給它的第二個字串。 replace()
是另一個內建在 String 類中的函式,因此可以在 String 物件 my_str
上使用。
獲取字串的長度
通過使用 length()
可以輕鬆獲得字串的長度。在示例草圖中,length()
返回的結果直接傳遞給 Serial.println()
,而不使用中間變數。
何時使用字串物件
String 物件比字串字元陣列更容易使用。該物件具有內建函式,可以對字串執行許多操作。
使用 String 物件的主要缺點是它使用大量記憶體並且可以快速耗盡 Arduinos RAM 記憶體,這可能導致 Arduino 掛起、崩潰或意外行為。如果 Arduino 上的草圖很小並且限制了物件的使用,那麼應該沒有問題。
字元陣列字串更難以使用,你可能需要編寫自己的函式來操作這些型別的字串。優點是你可以控制所做的字串陣列的大小,因此可以保持較小的陣列以節省記憶體。
你需要確保不使用字串陣列寫入陣列邊界的末尾。String 物件沒有這個問題,只要有足夠的記憶體供它操作,它將為你處理字串邊界。String 物件在記憶體不足時,會嘗試寫入不存在的記憶體,但永遠不會寫入它正在操作的字串的末尾。
使用字串的地方
在本章中,我們研究了字串,它們在記憶體中的行為以及它們的操作。
本課程的下一部分將介紹字串的實際用法,比如如何從序列監視器視窗獲取使用者輸入並將輸入儲存在字串中。