在 Arduino 中拆分字串
本教程將討論使用 Arduino 中的 substring()
函式拆分字串。
在 Arduino 中使用 substring()
函式拆分字串
Arduino 提供了一個內建函式 substring()
來拆分給定的字串。我們可以使用開始和結束索引值拆分字串。
substring()
函式有兩個引數。第一個引數是我們要開始拆分過程的起始索引值,第二個引數是拆分過程將停止的結束索引值。
語法:
Sub_string = MyString.substring(from, to);
變數 Sub_string
將包含 substring()
函式的輸出,而 MyString
變數將包含我們要拆分的原始字串。from
變數包含起始索引,to
變數包含結束索引。
讓我們定義一個字串並使用 substring()
函式將其拆分,然後將其列印在 Arduino 的序列監視器上。
例子:
String My_S = "hello world";
void setup(){
Serial.begin(9600);
}
void loop(){
String sub_S = My_S.substring(0,5);
Serial.println(sub_S);
delay(1000);
}
輸出:
hello
在上面的程式碼中,Serial.println()
函式在 Arduino 的序列監視器上列印結果。字串拆分將從 0 開始,包括 0 索引字元,並在索引 5 結束,不包括索引 5 處的字元。
我們還可以使用 Arduino 的 indexOf()
函式找到字元索引。函式的索引接受兩個引數。
第一個引數是強制性的,表示我們要查詢其索引的字元或字串。第二個引數是可選的,它表示查詢字元索引的起始索引。
預設情況下,indexOf()
函式從頭開始搜尋字串以查詢給定字元的索引,但我們也可以使用 indexOf()
函式的第二個引數傳遞一個索引作為起點。
語法:
int index = MyString.indexOf(val, from);
index
變數將儲存 val
變數索引,該索引包含上述程式碼中的字元或字串。from
變數定義了用作查詢給定字元索引的起點的起始索引。
當我們不知道要傳入 substring()
的字元索引時,我們使用 indexOf()
函式。
例如,如果我們想使用空格字元作為結束索引來分割給定的字串,我們可以使用 indexOf()
函式找到空格字元的索引,然後在 substring()
函式中使用它拆分字串。
如果在給定字串中找不到索引,indexOf()
函式將返回 -1。
例子:
String My_S = "hello world";
void setup(){
Serial.begin(9600);
}
void loop(){
int index = My_S.indexOf(' ');
String sub_S = My_S.substring(0,index);
Serial.println(index);
Serial.println(sub_S);
delay(1000);
}
輸出:
5
hello
在上面的程式碼中,變數 index
包含給定字串中存在的空格字元的索引。如你所見,我們在序列監視器視窗上顯示了索引和字串拆分的結果。
我們還可以根據行數拆分字串。
例如,如果一個字串包含多行文字,我們想要拆分並將每一行作為一個單獨的字串。
我們可以使用 indexOf('\n')
函式來查詢新行的索引並相應地拆分給定的字串。
indexOf()
函式從給定字串的開頭開始搜尋索引。但是,我們也可以使用 lastIndexOf()
函式,它從字串末尾開始搜尋索引。
作為第二個引數,我們還可以在 lastIndexOf()
函式中傳遞起始索引。例如,讓我們拆分一個包含三行的字串,獲取最後一行,並將其顯示在序列監視器視窗上。
例子:
String My_S = "hello world\nGreetings\nPeople";
void setup(){
Serial.begin(9600);
Serial.println(My_S);
}
void loop(){
int index = My_S.lastIndexOf('\n');
int length = My_S.length();
String sub_S = My_S.substring(index, length);
Serial.println(sub_S);
delay(100000);
}
輸出:
hello world
Greetings
People
People
我們在上面的程式碼中使用了 lastIndexOf()
函式,因為我們只想獲取給定字串中存在的最後一行文字。前三行是輸出中給定的字串,第四行是字串拆分的結果。
我們使用 length()
函式來獲取給定字串的長度,該長度將用作 substring()
中的結束索引值。我們使用 delay()
函式在程式碼執行中新增一些延遲,因為迴圈將重複該過程。
如果我們只想進行拆分,我們可以在 setup()
函式中編寫程式碼,該函式只執行一次。
我們可以根據任何字元拆分字串。我們只需要使用 indexOf()
函式找到它的索引。
我們可以使用 substring()
函式拆分字串。假設我們想分別獲取給定字串中的所有行。我們必須獲取一行,將剩餘的字串儲存在一個變數中,然後使用迴圈再次執行相同的操作,直到提取所有行。