Как правильно удалить часть строки?

Есть строка

odborka_vecher_01.jpg,%,podborka_vecher_37.jpg

причем ,%, может и не стоять перед переменой, к примеру если строка имеет такой вид podborka_vecher_37.jpg.
Есть переменая

var string = podborka_vecher_37.jpg

Надо в случае если перед podborka_vecher_37.jpg стоит ,%, удалить вместе с ,%,, а если нет то удалить просто строку. Подскажите как это лучше сделать?
  • Вопрос задан
  • 114 просмотров
Решения вопроса 1
AlekseyNemiro
@AlekseyNemiro
full-stack developer
Раз подстроки разделены запятыми, то проще всего получить массив с помощью функции split, перебрать элементы циклом, собрать новый массив без ненужных данных и потом склеить с помощью join:

// входящие данные
var str = 'odborka_vecher_01.jpg,%,podborka_vecher_37.jpg';
// разбиваем на массив по запятой
var arr = str.split(',');
// фильтруем
var resultArr = [];
for (var i = 0; i < arr.length; i++)
{
  if (arr[i] != '%')
  {
    // добавляем в результат
    resultArr.push(arr[i]);
  }
}
// склеиваем новый массив в строку
var result = resultArr.join(',');
// выводим полученный результат в консоль
console.log(result);

Более короткий вариант и без join:

str.split(',').forEach(function(item) {
  if (item != '%') { 
    if (result != '') { result += ','; }
    result += item; 
  }
});

console.log(result);

Еще короче, с использованием filter:

var arr = str.split(',').filter(function(item) {
  return item != '%';
});

var result = arr.join(',');

В качестве альтернативного решения, обычный поиск и замена:

var result = str.replace(/,\%,/g, '');
// с учетом того, что % может быть первым или последним
// str.replace(/(\,*)\%(\,*)/g, '')
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы