Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Arduino:Примеры/StringComparisonOperators

Материал из Онлайн справочника
Перейти к: навигация, поиск

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Строковые операторы сравнения [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).

Arduino bb.png

Код

  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. }

См.также

  1. String object
  2. StringConstructors
  3. StringAdditionOperator
  4. StringIndexOf
  5. StringAppendOperator
  6. StringLengthTrim
  7. StringCaseChanges
  8. StringReplace
  9. StringCharacters
  10. StringStartsWithEndsWith
  11. StringComparisonOperators
  12. StringSubstring

Внешние ссылки

  1. String Comparison Operators