[]

Оператор [] даёт прямой доступ к символу объекта String по индексу — аналог charAt(n), удобный для посимвольного разбора строк в цикле for.

Полная статья

Описание

Оператор [] даёт прямой доступ к любому символу объекта String по его порядковому номеру — индексу. Это удобно, когда нужно разобрать строку посимвольно: проверить конкретный символ, скопировать его в переменную или сравнить с другим значением.

Индексация начинается с нуля: первый символ строки находится по индексу 0, второй — по 1 и так далее.

Синтаксис

char thisChar = myString[n]

Параметры

  • myString: объект типа String, из которого извлекается символ.
  • n: целочисленный индекс нужного символа (отсчёт с нуля).
  • thisChar: переменная типа char, в которую записывается результат.

Возвращает

Символ типа char, стоящий на позиции n в строке myString. Это полностью эквивалентно вызову charAt(n): оба способа дают одинаковый результат, выбирайте тот, что удобнее читать.

Где применяется

  • Посимвольный разбор команды, пришедшей через Serial: например, проверка первого символа для определения типа сообщения.
  • Валидация ввода: убедиться, что строка начинается с цифры или определённого префикса.
  • Итерация по строке в цикле for для подсчёта вхождений символа или преобразования регистра.
  • Извлечение отдельных полей из простого текстового протокола с фиксированной структурой.

Практические замечания

  • Всегда проверяйте, что индекс n строго меньше myString.length(). Если индекс равен длине строки или больше неё, вы читаете память за пределами объекта — результат непредсказуем и может привести к трудноуловимым ошибкам.
  • Строки в Arduino индексируются с нуля, поэтому последний символ находится по индексу myString.length() - 1, а не myString.length().
  • Оператор [] возвращает значение, но не ссылку: изменить символ строки через него нельзя. Для замены символа используйте метод setCharAt() или пересоберите строку.
  • Если строка пришла по Serial и вы не уверены в её длине, сначала убедитесь, что данные полностью получены, и только потом обращайтесь к конкретным индексам.
  • При отладке удобно выводить найденный символ через Serial.println(thisChar) — это поможет убедиться, что вы читаете именно тот символ, который ожидаете.