Главная chevron_right Уроки chevron_right Встроенные примеры chevron_right Строки chevron_right String Character Functions: charAt() и setCharAt()

String Character Functions: charAt() и setCharAt()

Узнайте, как читать и изменять отдельные символы строки в Arduino с помощью функций charAt() и setCharAt().

Функции charAt() и setCharAt() из класса String позволяют получить или задать значение конкретного символа в строке по его позиции (индексу).

В простейшем случае эти функции помогают найти нужный символ и заменить его. Например, следующий код заменяет двоеточие в строке на знак равенства:

String reportString = "SensorReading: 456";
int colonPosition = reportString.indexOf(':');
reportString.setCharAt(colonPosition, '=');

А вот пример, который проверяет, является ли первая буква второго слова символом 'B':

String reportString = "Franklin, Benjamin";
int spacePosition = reportString.indexOf(' ');
if (reportString.charAt(spacePosition + 1) == 'B') {
Serial.println("You might have found the Benjamins.")
}

Важно: Если вы попытаетесь прочитать charAt или установить setCharAt() символ на позиции, выходящей за пределы длины строки, результат будет непредсказуемым. Если вы не уверены в длине строки, всегда проверяйте индекс с помощью функции length() — убедитесь, что нужная позиция меньше длины строки.

Как это работает

  • charAt(n) возвращает символ типа char, стоящий на позиции n (нумерация с нуля).
  • setCharAt(n, c) заменяет символ на позиции n символом c. Метод изменяет строку на месте и не возвращает значения.
  • Оба метода работают только с объектами типа String (с заглавной буквы). С обычными C-строками (char[]) используйте прямой доступ по индексу: str[n].

Типичные ошибки

  • Выход за пределы строки. Индекс начинается с 0, последний допустимый — length() - 1. Обращение к charAt(length()) или за его пределами даёт мусорное значение.
  • Путаница с типами. charAt() возвращает char, а не String. Если нужно сравнить с символом, используйте одинарные кавычки: charAt(0) == 'A', а не двойные.
  • Изменение через setCharAt() не работает с const String. Убедитесь, что строка объявлена как обычная переменная String, а не как константа.

Необходимое оборудование

Схема подключения

Внешние компоненты для этого примера не нужны. Достаточно подключить плату к компьютеру через USB и открыть монитор последовательного порта в Arduino IDE.

Плата Arduino UNO — никаких внешних компонентов не требуется.

Код

Как проверить результат

Откройте монитор последовательного порта (Ctrl+Shift+M или кнопка в правом верхнем углу IDE) и установите скорость передачи, соответствующую той, что указана в Serial.begin(). В окне монитора вы увидите исходные строки и результат замены или проверки символа. Если вывод выглядит как набор случайных символов — проверьте скорость порта.

Узнать больше

Больше базовых уроков вы найдёте в разделе built-in examples.

Также рекомендуем изучить language reference — подробный справочник по языку программирования Arduino.

Последнее обновление: 11.08.2015, SM