@c4ptain_h3mp

Как удалить рандомный буквенный символ из строчки текста?

Здравствуйте, есть задание: вводится строка текста с которой нужно удалить один или два буквенных символа, знаки пунктуации и числа удалять нельзя. Не знаю как реализовать саму выборку на удаление букв. Спасибо за помощь.
  • Вопрос задан
  • 308 просмотров
Пригласить эксперта
Ответы на вопрос 2
sergiks
@sergiks Куратор тега JavaScript
♬♬
Наверное, это задание на собеседовании?

Алгоритм: записать в массив позиции символов, которые удалить можно. Проверку делать на цифры/знаки препинания, т.к. их меньше, чем буквенных символов – может, там иероглифов накидают. Если длина массива удалябельных позволяет, с вероятностью 50% выбрать ещё один вариант под удаление.

Позиции под удаление отсортировать по возрастанию, и удалить символы из выбранных позиций, начиная с бОльшей позиции.
function eatme(s) {
  var arr = s.split('')
    , pos = [] // позиции удалябельных символов
    , i
    , todo = [] // позиции чтобы удалить
  ;

  for(i=0;i<arr.length;i++) if( !arr[i].match(/[\s\d\.,\?\!:;\(\)"'`—–-]/)) pos.push(i);
  if( pos.length === 0) return s; // нечего удалять

  todo.push( pos.splice( Math.floor( Math.random() * pos.length),1)[0]);
  if( pos.length > 0 && Math.random() > 0.5) {
    todo.push( pos.splice( Math.floor( Math.random() * pos.length),1)[0]);  
  }
  
  // todo содержит 1 или 2 индеса для удаления
  todo = todo.sort(function(a,b){return a>b?1:(a<b?-1:0)});
  while(todo.length) arr.splice( todo.pop(), 1);
  return arr.join('');
}

console.log( eatme("hello, world!"))

Fiddle
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы