remove()
Метод remove() удаляет символы из объекта String прямо на месте — от заданного индекса до конца строки или на указанное количество символов count.
Полная статья
Описание
Метод remove() изменяет строку типа String непосредственно в памяти: удаляет символы начиная с указанной позиции. Можно удалить всё до конца строки или задать точное количество символов, которые нужно убрать. Исходный объект изменяется, отдельная копия не создаётся.
Синтаксис
myString.remove(index)myString.remove(index, count)
Параметры
myString: переменная типаString.index: позиция первого удаляемого символа. Нумерация начинается с нуля, то есть первый символ строки — это позиция0. Разрешённые типы данных:unsigned int.count: сколько символов нужно удалить начиная с позицииindex. Если этот параметр не указан, удаляются все символы отindexдо конца строки. Разрешённые типы данных:unsigned int.
Возвращает
Ничего. Метод изменяет сам объект String, к которому применяется.
Пример кода
String greeting = "hello";
greeting.remove(2, 2); // greeting теперь содержит "heo"
Где применяется
- Обрезка лишних символов в конце строки, полученной от датчика или по Serial.
- Удаление служебных символов (переносов строки
\n, пробелов, разделителей) перед разбором данных. - Очистка части строки перед повторной записью в неё новых данных.
- Форматирование вывода: удаление ненужного префикса или суффикса перед отправкой в дисплей или Serial.
Практические замечания
- Если
indexбольше или равен длине строки, метод ничего не делает — строка остаётся без изменений. - Если
countпревышает количество символов отindexдо конца строки, удаляются только оставшиеся символы — выхода за границы не происходит. - Метод изменяет строку «на месте», поэтому если исходные данные ещё нужны, сделайте копию до вызова:
String backup = myString;. - Частое использование
remove()вместе с другими методами, изменяющими длину строки, может приводить к фрагментации кучи на платах с малым объёмом RAM (например, Uno). Старайтесь заранее планировать размер строк. - Для удаления одного символа в конкретной позиции удобно использовать
myString.remove(index, 1).