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 物件在記憶體不足時,會嘗試寫入不存在的記憶體,但永遠不會寫入它正在操作的字串的末尾。

使用字串的地方

在本章中,我們研究了字串,它們在記憶體中的行為以及它們的操作。

本課程的下一部分將介紹字串的實際用法,比如如何從序列監視器視窗獲取使用者輸入並將輸入儲存在字串中。