Arduino内置教程-字符串-String Addition Operator

字符加法运算符

  • 你可以用多种方法把字符串加在一起。这也叫字符串连接,而且它会由于你连接的字符串或者字符数组的长度,而导致原字符串变得更长。+运算符允许你来把字符串和另一个字符串,常量字符数组,ASCII,变量,或者常量字符等组合起来。
  // adding a constant integer to a string:
  stringThree =  stringOne + 123;

  // adding a constant long interger to a string:
  stringThree = stringOne + 123456789;

  // adding a constant character to a string:
  stringThree =  stringOne + 'A';

  // adding a constant string to a string:
  stringThree =  stringOne +  "abc";

  // adding two Strings together:
  stringThree = stringOne + stringTwo;
  • 如果函数返回一个和上面说的数据类型相符的值,你可以用+运算符来把函数的结果加到字符串里。例如:
  stringThree = stringOne + millis();
  • 这是符合的值,因为millis()函数返回一个长整数,这是可以被加到字符串里的。你也可以这样做:
  stringThree = stringOne + analogRead(A0);
  • 因为analogRead()返回一个整数。当你要显示一个组合字符串(含数值和描述,用来显示串口通讯,LCD显示,以太网通讯,或者其他地方)时,字符串连接会很有用。
  • 注意:你应该对连到一起的多个数据类型小心,因为你可能会得到一个出乎意料的结果。如:
  int sensorValue = analogRead(A0); 
  String stringOne = "Sensor value: ";
  String stringThree = stringOne + sensorValue;
  Serial.println(stringThree);  
  • 结果是"Sensor Value: 402",或者不管analogRead()的结果怎样,只是:
  int sensorValue = analogRead(A0); 
  String stringThree = "Sensor value: " + sensorValue;
  Serial.println(stringThree); 
  • 得到不可预测的结果是因为stringThree在你开始连接不同数据类型前从来没有得到一个初始值。
  • 这里是另外一个例子,不合适的初始值会引起错误:
  Serial.println("I want " + analogRead(A0) + " donuts");  
  • 这个不能编译,因为编译器不能正确操作运算符的优先度。另一方面,下面的例子可以编译,但不能运行出预期的结果:
  int sensorValue = analogRead(A0); 
  String stringThree = "I want " + sensorValue;
  Serial.println(stringThree  + " donuts");  
  • 它因为和前面同样的原因而不能正确运行:在你开始连接不同数据类型前,stringThree 从没有得到一个初始化的值。

  • 而最好的结果是,在你连接他们前,初始化你的字符串。

硬件要求

  • Arduino or Genuino 开发板

电路

  • 这个例子不需要连接额外的电路,除了你的开发板需要连接到你的电脑,并且打开Arduino IDE的串口监视器窗口。

请输入图片描述

图由 Fritzing 软件绘制

样例代码

这里是几个不同连接工作的例子:

/*
  Adding Strings together

 Examples of how to add strings together
 You can also add several different data types to string, as shown here:

 created 27 July 2010
 modified 2 Apr 2012
 by Tom Igoe

 http://www.arduino.cc/en/Tutorial/StringAdditionOperator

 This example code is in the public domain.
 */

// declare three strings:
String stringOne, stringTwo, stringThree;

void setup() {
  // initialize serial and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }

  stringOne = String("You added ");
  stringTwo = String("this string");
  stringThree = String();
  // send an intro:
  Serial.println("\n\nAdding strings together (concatenation):");
  Serial.println();
}

void loop() {
  // adding a constant integer to a string:
  stringThree =  stringOne + 123;
  Serial.println(stringThree);    // prints "You added 123"

  // adding a constant long interger to a string:
  stringThree = stringOne + 123456789;
  Serial.println(stringThree);    // prints "You added 123456789"

  // adding a constant character to a string:
  stringThree =  stringOne + 'A';
  Serial.println(stringThree);    // prints "You added A"

  // adding a constant string to a string:
  stringThree =  stringOne +  "abc";
  Serial.println(stringThree);    // prints "You added abc"

  stringThree = stringOne + stringTwo;
  Serial.println(stringThree);    // prints "You added this string"

  // adding a variable integer to a string:
  int sensorValue = analogRead(A0);
  stringOne = "Sensor value: ";
  stringThree = stringOne  + sensorValue;
  Serial.println(stringThree);    // prints "Sensor Value: 401" or whatever value analogRead(A0) has

  // adding a variable long integer to a string:
  long currentTime = millis();
  stringOne = "millis() value: ";
  stringThree = stringOne + millis();
  Serial.println(stringThree);    // prints "The millis: 345345" or whatever value currentTime has

  // do nothing while true:
  while (true);
}

[Get Code]

更多

  • String object – 字符串对象的参考
  • CharacterAnalysis - 使用operators来识别对应的特征类型。
  • StringAdditionOperator - 用不同方法把字符串加到一起。
  • StringAppendOperator - 用+=运算符和concat()方法来添加东西到字符串里。
  • StringCaseChanges - 改变字符串的状态。
  • StringCharacters - 在字符串里获得或设置一个指定的字符的值
  • StringComparisonOperators - 按字母排列顺序地比较字符串
  • StringConstructors - 初始化字符串对象
  • StringIndexOf - 寻找在字符串里字符的第一个或最后一个的状态
  • StringLength - 获得和修剪字符串的长度
  • StringLengthTrim - 获得和修剪字符串的长度
  • StringReplace - 替换字符串里的个别字符
  • StringStartsWithEndsWith - 检查一个给定的字符或子串(substrings)的开始或结尾
  • StringSubstring - 在给定的字符串里寻找"phrases"
  • StringToInt - 允许你把字符串转换成整数数字

标签: arduino内置教程, arduino string addition operator