Arduino:Примеры/StringComparisonOperators
Поддержать проект | Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Содержание
Строковые операторы сравнения [1]
Операторы ==, !=, > , <, >=, <=, а также функции equals() и equalsIgnoreCase() позволяют делать алфавитные сравнения между строками. Они могут пригодиться при сортировке и расстановке данных по алфавиту. Оператор == и функция equals() работают одинаковым образом. Каким именно способом пользоваться – вопрос стиля. То есть,
1 if (stringOne.equals(stringTwo)) {
идентично
1 if (stringOne ==stringTwo) {
Операторы «больше, чем» (<) и «меньше, чем» (>) сравнивают строки исходя из алфавитного порядка. При этом в строки, содержащие больше одного символа, будут сравниваться до тех пор, пока оператор не найдет первый различный символ. К примеру, «а» < «b» и «1» < «2», но в то же время «999» > «1000», потому что «9» больше чем «1».
Внимание! Строковые операторы сравнения могут сбить с толку при сравнении строк, состоящих из чисел, потому что вы (но не программа) рассматриваете их именно как числа, а не как строки. Поэтому, сравнивая числа, сравнивайте их в виде различных типов данных – int, float или long.
Необходимое оборудование
- Плата Arduino;
Цепь
Для этого примера цепь не нужна, просто подключите Arduino к компьютеру (через USB).
Код
1 /*
2 Сравнение строк
3
4 Несколько примеров сравнения строк при помощи операторов сравнения
5
6 Создан 27 июля 2010,
7 модифицирован 2 апреля 2012 Томом Иго (Tom Igoe).
8
9 http://arduino.cc/en/Tutorial/StringComparisonOperators
10
11 Этот код не защищен авторским правом.
12 */
13
14 String stringOne, stringTwo;
15
16 void setup() {
17 // Инициализируем последовательную передачу данных и ждем открытия порта:
18 Serial.begin(9600);
19 while (!Serial) {
20 ; // ждем, когда подключится последовательный порт (нужно только для Leonardo)
21 }
22
23
24 stringOne = String("this");
25 stringTwo = String("that");
26 // Отсылаем вступительную часть:
27 Serial.println("\n\nComparing Strings:");
28 Serial.println();
29
30 }
31
32 void loop() {
33 // Проверяем строки на идентичность:
34 if (stringOne == "this") {
35 Serial.println("StringOne == \"this\"");
36 }
37 // Проверяем строки на неидентичность:
38 if (stringOne != stringTwo) {
39 Serial.println(stringOne + " =! " + stringTwo);
40 }
41
42 // Проверяем строки на неидентичность (с акцентом на регистр):
43 stringOne = "This";
44 stringTwo = "this";
45 if (stringOne != stringTwo) {
46 Serial.println(stringOne + " =! " + stringTwo);
47 }
48 // Идентичность строк можно проверить и при помощи функции equals():
49 if (stringOne.equals(stringTwo)) {
50 Serial.println(stringOne + " equals " + stringTwo);
51 }
52 else {
53 Serial.println(stringOne + " does not equal " + stringTwo);
54 }
55
56 // Или, возможно, вы хотите проигнорировать регистр:
57 if (stringOne.equalsIgnoreCase(stringTwo)) {
58 Serial.println(stringOne + " equals (ignoring case) " + stringTwo);
59 }
60 else {
61 Serial.println(stringOne + " does not equal (ignoring case) " + stringTwo);
62 }
63
64 // Числовая строка сравнивается с числом, которое она содержит:
65 stringOne = "1";
66 int numberOne = 1;
67 if (stringOne.toInt() == numberOne) {
68 Serial.println(stringOne + " = " + numberOne);
69 }
70
71
72 // Сравниваем две числовые строки:
73 stringOne = "2";
74 stringTwo = "1";
75 if (stringOne >= stringTwo) {
76 Serial.println(stringOne + " >= " + stringTwo);
77 }
78
79 // Операторы сравнения могут использоваться и для сравнения строк в целях алфавитной сортировки:
80 stringOne = String("Brown");
81 if (stringOne < "Charles") {
82 Serial.println(stringOne + " < Charles");
83 }
84
85 if (stringOne > "Adams") {
86 Serial.println(stringOne + " > Adams");
87 }
88
89 if (stringOne <= "Browne") {
90 Serial.println(stringOne + " <= Browne");
91 }
92
93
94 if (stringOne >= "Brow") {
95 Serial.println(stringOne + " >= Brow");
96 }
97
98 // Функция compareTo() тоже позволяет сравнивать строки.
99 // Он позволяет определить, с какого символа начинаются отличия между строками.
100 // Таким образом, если первый различный символ строки stringTwo
101 // (в данном случае – пятый)
102 // с точки зрения алфавита будет более «старшим»,
103 // то оператор compareTo() будет больше «0».
104 stringOne = "Cucumber";
105 stringTwo = "Cucuracha";
106 if (stringOne.compareTo(stringTwo) < 0 ) {
107 Serial.println(stringOne + " comes before " + stringTwo);
108 }
109 else {
110 Serial.println(stringOne + " comes after " + stringTwo);
111 }
112
113 delay(10000); // потому что следующая часть - цикл:
114
115 // Кроме того, функция compareTo() удобна при сравнении числовых строк:
116
117 while (true) {
118 stringOne = "Sensor: ";
119 stringTwo= "Sensor: ";
120
121 stringOne += analogRead(A0);
122 stringTwo += analogRead(A5);
123
124 if (stringOne.compareTo(stringTwo) < 0 ) {
125 Serial.println(stringOne + " comes before " + stringTwo);
126 }
127 else {
128 Serial.println(stringOne + " comes after " + stringTwo);
129
130 }
131 }
132 }
См.также
- String object
- StringConstructors
- StringAdditionOperator
- StringIndexOf
- StringAppendOperator
- StringLengthTrim
- StringCaseChanges
- StringReplace
- StringCharacters
- StringStartsWithEndsWith
- StringComparisonOperators
- StringSubstring
Внешние ссылки