javascript разделить строку выделенный текст удалить

Как удалить фрагмент текста из строки с помощью javascript

Пример строки:

var start = "World,Book,Pencil,Door";

Теперь, когда я выбираю любое из выбранных значений: "World", я хочу, чтобы результатом было "Book,Pencil,Door".

// result = "Book,Pencil,Door";

person Selahattin    schedule 03.01.2015    source источник
comment
Вы спрашиваете, как взять массив строк и вернуть массив с одним элементом меньше? Можете уточнить свой вопрос?   -  person wmock    schedule 04.01.2015
comment
Пожалуйста, поделитесь кодом, который у вас уже есть, и покажите, что не работает. Мы с радостью поможем вам решить эту проблему. Возможные ответы, связанные с вашим вопросом: stackoverflow.com/questions/7142890/   -  person Bjorn    schedule 04.01.2015


Ответы (1)


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

var removeValue = function(list, value, separator) {
  separator = separator || ",";
  var values = list.split(separator);
  for(var i=0; i<values.length; i++) {
    if(values[i]===value) {
      values.splice(i, 1);
      return values.join(separator);
    }
  }
  return list;
}

Если искомое значение найдено, оно удаляется и возвращается новый список с разделителями-запятыми. Если он не найден, возвращается старый список.

Другая версия... с использованием indexOf

var removeValue = function(list, value, separator) {
  separator = separator || ",";
  var values = list.split(separator);
  var index = values.indexOf(value);
  if(index >= 0) {
    values.splice(index, 1);
    return values.join(separator);
  } else {
    return list;
  }
}

По сути, с помощью любой функции вы отправляете список ("World,Book,Pencil,Door") в виде строки, значение для удаления ("World") в виде другой строки и разделитель ("," для запятой... однако запятая также используется по умолчанию, поэтому ее можно опустить) ). Если значение для удаления не существует в списке, он вернет список. Если он есть в списке, он будет удален.

Пример 1:

var final = removeValue("World,Book,Pencil,Door", "World");
// final = "Book,Pencil,Door"

Пример 2:

var final = removeValue("World,Book,Pencil,Door", "House");
// final = "World,Book,Pencil,Door"

Пример 3:

var final = removeValue("World|Book|Pencil|Door", "World", "|");
// final = "Book,Pencil,Door"

ОБНОВЛЕНИЕ:

jsFiddle: http://jsfiddle.net/rfornal/96awa2ht/

person rfornal    schedule 03.01.2015
comment
Это будет похоже? var removeValue = функция (список, значение, разделитель) { var final = removeValue (Мир, Книга, Карандаш, Дверь, Мир); разделитель = разделитель || ,; переменные значения = list.split(разделитель); var index = values.indexOf (значение); если (индекс ›= 0) { values.splice (индекс, 1); возвращаемые значения .join (разделитель); } еще { вернуть список; } } - person Selahattin; 04.01.2015
comment
Нет, removeValue - это функция... первая строка может быть записана и как function removeValue(list, value, separator) {... - person rfornal; 04.01.2015
comment
var final = removeValue("World,Book,Pencil,Door", "World"); выполняется где-то еще в вашем коде для создания нового списка с удаленным World. - person rfornal; 04.01.2015