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