在 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()
函数拆分字符串。假设我们想分别获取给定字符串中的所有行。我们必须获取一行,将剩余的字符串保存在一个变量中,然后使用循环再次执行相同的操作,直到提取所有行。