Как удалить символы из массива
Перейти к содержимому

Как удалить символы из массива

  • автор:

Как удалить символ из одномерного массива?

Я только недавно познакомился с массивами, поэтому и вопрос дилетантский. Итак, я разбиваю строку «Hello, World!» на символьный массив, допустим, мне нужно убрать пробел. Я думал использовать Esc-последовательность ‘\b’, но почему-то она затирает 2 символа.

using namespace std; int main() < char arr[13]< 'H','e','l','l', 'o', ',', ' ', 'W', 'o','r', 'l', 'd', '!' >; int i, j; for (i = 0; i < 13; i++) < if (arr[i] == ' ') arr[i] = '\b'; >for (j = 0; j

После этого в консоли получается «HelloWorld!». Не понимаю, почему удалились сразу ‘ ‘ и ‘,’ . Подскажите пожалуйста, как универсально и эффективно затирать символы из массива?

Отслеживать

задан 18 июн 2021 в 14:09

Makar Kosenko Makar Kosenko

27 5 5 бронзовых знаков

Как удалить элемент символьного массива?

Собственно,в этом весь вопрос.
Например,находимся мы в массиве из строк (char str[120]) .Неважно в каком месте(допустим,на 5 элементе).Необходимо удалить элемент,идущий до этого места(предыдущие 2 элемента).

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Удалить * из символьного массива
Надо проверить текст из Edit1 и удалить из него * void __fastcall TForm1::Button1Click(TObject.

Удалить символ из символьного массива
Дана строка, если она является палиндромом, то вывести запись. Если не палиндром, то дополнить эту.

Удалить из символьного одномерного массива повторяющиеся символы
пожалуйста подскажите. как удалить из символьного одномерного массива повторяющиеся символы?

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

2441 / 1839 / 406
Регистрация: 15.12.2013
Сообщений: 8,223
CLiteratir, 1. проблема в чем?
2. почему не использовать std::string,std::vector,std::array?
265 / 165 / 56
Регистрация: 25.02.2015
Сообщений: 435

такие массивы не меняют свой размер динамически. чтобы что-то удалить, нужно сместить все, что было после удаляемого символа на еденицу влево. например:
был массив
a b c d e
хотим удалить третий элемент. для этого сдвигаем все, что после него (т.е. d и e) на еденицу влево. получаем:
a b d e

сдвигать можете или в цикле или какой-нибудь memmove заюзать или что-то вроде этого.

ну и конечно же с stl все это на много проще. просто вызов одного метода.

2441 / 1839 / 406
Регистрация: 15.12.2013
Сообщений: 8,223

ЦитатаСообщение от Perfilov Посмотреть сообщение

ну и конечно же с stl все это на много проще. просто вызов одного метода.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
#include #include int main ()  char arr[] = "my simple texts"; size_t count =0; auto pend = std::remove_if (std::begin(arr), std::end(arr), [&count](const auto &p) { return (count==4)); for (auto p=std::begin(arr); p!=pend; ++p) std::cout *p; std::cout  std::endl; return 0; }

1370 / 593 / 199
Регистрация: 02.08.2011
Сообщений: 2,882

Интересно, вопрос такой неточный и такие уверенные ответы.
Как удалить элемент символьного массива?
Мы в массиве из строк
предположительно на 5 элементе
необходимо удалить элемент, идущий до этого 5 места (не элементы)
и заканчиваем на словах: «предыдущие 2 элемента».

ТС вообще сам знает чего хочет?

2441 / 1839 / 406
Регистрация: 15.12.2013
Сообщений: 8,223

ЦитатаСообщение от daslex Посмотреть сообщение

Интересно, вопрос такой неточный и такие уверенные ответы.
Регистрация: 03.10.2015
Сообщений: 38

ЦитатаСообщение от daslex Посмотреть сообщение

Интересно, вопрос такой неточный и такие уверенные ответы.
Как удалить элемент символьного массива?
Мы в массиве из строк
предположительно на 5 элементе
необходимо удалить элемент, идущий до этого 5 места (не элементы)
и заканчиваем на словах: «предыдущие 2 элемента».
ТС вообще сам знает чего хочет?

Человек вводит строку(char str[]]. Мы считаем кол-во слов и удаляем из нее все слова,что меньше 2 букв(например). Так яснее?

1370 / 593 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
Приблизительно так

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
#include #include #include using namespace std; int main() { char str[] ="Hello this is a test strig "; char Arr[255][255]= {}; //Массив в левых скобках максимальная длина строки плюс 1, в правых скобках тоже, т.е. Arr[N+1][N+1] size_t len = strlen(str); int Row(0),Col(0); const int min_len = 2; //Меньше скольки удалить cout  str "\n"; for (size_t i=0; ilen; i++) { if (isalpha(str[i]) ) { Arr[Row][Col++] = str[i]; Arr[Row][Col] = 0; } else { Row++; Col=0; Arr[Row][Col] = str[i]; Arr[Row][Col+1] = 0; if (!ispunct(str[i])){ Row++; Col=0; Arr[Row][Col+1]=str[i]; Arr[Row][Col] = 0; } } } /*В массиве Arr все слова, если надо изменить исходный массив, делай его из этого Arr*/ for (int i=0;iRow;i++)  }

Регистрация: 13.10.2015
Сообщений: 5

delete(Str,mesto_gde_naxodimsya-skolko_do_nego_nado_udalit,skolko_nado_udalit)

Добавлено через 6 минут
для вашего примера

delete(str,5-2,2)

Добавлено через 1 минуту

delete(Str,5-2,2)

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Как удалить элемент из массива
Нужно удалить элемент из массива, пример задачи: Из данного массива чисел х(15) исключить.

Как удалить элемент из массива?
покажите пожалуйста пример с простым массивом и с динамическим. ____________ зарание спс:)

Как удалить элемент из динамического массива?
Доброго времени суток. Как удалить элемент с динамического массива? Zombie *virusDinArr=new.

Удалить из символьного массива все двойные символы
Задан символьный массив размера N. Удалить из массива все двойные символы (два одинаковых символа.

Как в каждом элементе массива убрать первые 3 символа и сохранить его?

Доброго времени суток! Мне нужно в каждом элементе массива убрать первые три символа (все элементы массива являются строками) и сохранить его. Я не хочу перезаписывать его в другую переменную, я хочу удалить у каждого элемента первые 3 символа и сохранить получившийся результат в этой же самой переменной

let result = getData().responseJSON; let resultResult = result.map((name) => < console.log(name.slice(3)); return name.slice(3); >); console.log(`result: $`); console.log(`resultResult: $`);

result — исходный массив,
resultResult имеет вид такой, какой мне нужно. Но мне нужно, чтобы такой вид имел массив result;
Спасибо за внимание.

  • Вопрос задан более трёх лет назад
  • 666 просмотров

Комментировать

Решения вопроса 4

Tim-A-2020

let result = ['string','string2','string3']; result = result.map(name => name.substr(3))

Ответ написан более трёх лет назад

Комментировать

Нравится 2 Комментировать

like-a-boss

Признайся,тебяТянетНаКодМужика,ты—программный гей

Ну легкотня же. В чём проблема перезаписывать текущий итерируемый элемент массива?

for (var i = 0; i < result.length; i++) < result[i] = result[i].slice(3); >console.log(result);

Ответ написан более трёх лет назад

Комментировать

Нравится 1 Комментировать

E1ON

Loli E1ON @E1ON Куратор тега JavaScript

Programming, Gamedev, VR

let resultResult = result.map(name => name.substr(3));

Ответ написан более трёх лет назад

Комментировать

Нравится 1 Комментировать

cr1gger

Все дороги ведут в Рим — встретимся в Риме!

var array = ['apple','car','bird']; array = array.map(value => value.substr(3)) console.log(array);

Ответ написан более трёх лет назад

Комментировать

Нравится Комментировать

Как удалить определенный элемент из массива js

Правильным способом удаления элемента из массива будет использование метода splice() . Этот метод принимает три аргумента, но нам нужны только первые два из них. Это индекс начиная с которого мы хотим удалить элементы. А также количество элементов, которые будут удалены из массива. Взгляните на пример ниже:

const letters = ["a", "b", "c"]; const index = 1; array.splice(index, 2); console.log(letters); // => [ 'a' ] 

18 октября 2022

Часто бывает в задачах, что нам требуется удалить из массива определенный элемент.
Один из способов — это воспользоваться функцией высшего порядка filter:

// К примеру, дан массив из чисел: const numbers = [1, 2, 3, 4, 5]; //необходимо удалить элемент, который равен трём. const numberToDelete = 3; //фильтруем исходный массив. //А для того, чтобы его не мутировать, присвоим его в новую переменную. const filteredNumbers = numbers.filter((number) => number !== numberToDelete); console.log(filteredNumbers); // => [1, 2, 4, 5] //Готово! 

Также есть самый явный способ для удаления элемента массива с помощью ключевого слова delete:

let fruits = ['banana', 'orange', 'apple']; //Допустим, что нам нужно удалить нулевой элемент массива. delete fruits[0]; console.log(fruits); // => [ , 'orange', 'apple' ] 

Обратите внимание, что на месте нулевого элемента осталось пустое место. Как правило, удалять элемент массива таким способом не является хорошей практикой. Данный способ приведен в качестве примера.

Если вам нужно удалить последний элемент массива, для этого есть способ — это метод pop(). Перейдём к примеру:

const fruits = ['banana', 'orange', 'apple']; fruits.pop(); console.log(fruits); // получаем => [ 'banana', 'orange' ] 

Но это еще не всё!
Одним из наиболее удобных методов для удаления элемента массива является метод splice():

const names = ['John', 'Darina', 'Mark', 'Kris']; //допустим, что дан массив имён. // Нам необходимо удалить из массива второй элемент. names.splice(2, 1); // начиная со второго элемента удаляем один элемент console.log(names); // => [ 'John', 'Darina', 'Kris' ] 

Это не все способы удаления элементов из массива, но и среди указанных можно найти метод по душе или же придумать что-то свое.

Документация:
  • Функция высшего порядка filter
  • Метод splice()
  • Метод pop()

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *