Arduino:Примеры/StringComparisonOperators
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Строковые операторы сравнения [1]
Операторы ==, !=, > , <, >=, <=, а также функции equals() и equalsIgnoreCase() позволяют делать алфавитные сравнения между строками. Они могут пригодиться при сортировке и расстановке данных по алфавиту. Оператор == и функция equals() работают одинаковым образом. Каким именно способом пользоваться – вопрос стиля. То есть,
if (stringOne.equals(stringTwo)) {
идентично
if (stringOne ==stringTwo) {
Операторы «больше, чем» (<) и «меньше, чем» (>) сравнивают строки исходя из алфавитного порядка. При этом в строки, содержащие больше одного символа, будут сравниваться до тех пор, пока оператор не найдет первый различный символ. К примеру, «а» < «b» и «1» < «2», но в то же время «999» > «1000», потому что «9» больше чем «1».
Внимание! Строковые операторы сравнения могут сбить с толку при сравнении строк, состоящих из чисел, потому что вы (но не программа) рассматриваете их именно как числа, а не как строки. Поэтому, сравнивая числа, сравнивайте их в виде различных типов данных – int, float или long.
Необходимое оборудование
- Плата Arduino;
Цепь
Для этого примера цепь не нужна, просто подключите Arduino к компьютеру (через USB).
Код
/*
Сравнение строк
Несколько примеров сравнения строк при помощи операторов сравнения
Создан 27 июля 2010,
модифицирован 2 апреля 2012 Томом Иго (Tom Igoe).
http://arduino.cc/en/Tutorial/StringComparisonOperators
Этот код не защищен авторским правом.
*/
String stringOne, stringTwo;
void setup() {
// Инициализируем последовательную передачу данных и ждем открытия порта:
Serial.begin(9600);
while (!Serial) {
; // ждем, когда подключится последовательный порт (нужно только для Leonardo)
}
stringOne = String("this");
stringTwo = String("that");
// Отсылаем вступительную часть:
Serial.println("\n\nComparing Strings:");
Serial.println();
}
void loop() {
// Проверяем строки на идентичность:
if (stringOne == "this") {
Serial.println("StringOne == \"this\"");
}
// Проверяем строки на неидентичность:
if (stringOne != stringTwo) {
Serial.println(stringOne + " =! " + stringTwo);
}
// Проверяем строки на неидентичность (с акцентом на регистр):
stringOne = "This";
stringTwo = "this";
if (stringOne != stringTwo) {
Serial.println(stringOne + " =! " + stringTwo);
}
// Идентичность строк можно проверить и при помощи функции equals():
if (stringOne.equals(stringTwo)) {
Serial.println(stringOne + " equals " + stringTwo);
}
else {
Serial.println(stringOne + " does not equal " + stringTwo);
}
// Или, возможно, вы хотите проигнорировать регистр:
if (stringOne.equalsIgnoreCase(stringTwo)) {
Serial.println(stringOne + " equals (ignoring case) " + stringTwo);
}
else {
Serial.println(stringOne + " does not equal (ignoring case) " + stringTwo);
}
// Числовая строка сравнивается с числом, которое она содержит:
stringOne = "1";
int numberOne = 1;
if (stringOne.toInt() == numberOne) {
Serial.println(stringOne + " = " + numberOne);
}
// Сравниваем две числовые строки:
stringOne = "2";
stringTwo = "1";
if (stringOne >= stringTwo) {
Serial.println(stringOne + " >= " + stringTwo);
}
// Операторы сравнения могут использоваться и для сравнения строк в целях алфавитной сортировки:
stringOne = String("Brown");
if (stringOne < "Charles") {
Serial.println(stringOne + " < Charles");
}
if (stringOne > "Adams") {
Serial.println(stringOne + " > Adams");
}
if (stringOne <= "Browne") {
Serial.println(stringOne + " <= Browne");
}
if (stringOne >= "Brow") {
Serial.println(stringOne + " >= Brow");
}
// Функция compareTo() тоже позволяет сравнивать строки.
// Он позволяет определить, с какого символа начинаются отличия между строками.
// Таким образом, если первый различный символ строки stringTwo
// (в данном случае – пятый)
// с точки зрения алфавита будет более «старшим»,
// то оператор compareTo() будет больше «0».
stringOne = "Cucumber";
stringTwo = "Cucuracha";
if (stringOne.compareTo(stringTwo) < 0 ) {
Serial.println(stringOne + " comes before " + stringTwo);
}
else {
Serial.println(stringOne + " comes after " + stringTwo);
}
delay(10000); // потому что следующая часть - цикл:
// Кроме того, функция compareTo() удобна при сравнении числовых строк:
while (true) {
stringOne = "Sensor: ";
stringTwo= "Sensor: ";
stringOne += analogRead(A0);
stringTwo += analogRead(A5);
if (stringOne.compareTo(stringTwo) < 0 ) {
Serial.println(stringOne + " comes before " + stringTwo);
}
else {
Serial.println(stringOne + " comes after " + stringTwo);
}
}
}
См.также
- String object
- StringConstructors
- StringAdditionOperator
- StringIndexOf
- StringAppendOperator
- StringLengthTrim
- StringCaseChanges
- StringReplace
- StringCharacters
- StringStartsWithEndsWith
- StringComparisonOperators
- StringSubstring