2016-07-19 4 views
-2

Я пытаюсь написать функцию, которая работает какКак удалить часть строки в JavaScript?

"aaaabbccccdeeeaaaaa" ->"abcdea"

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

String.prototype.removeConsecutives = function() 
{ 
     let k = 0; 
    for(int i = 0; i < this.length; ++i) 
     if(this[i] !== this[i-1]) 
      this[k++] = this[i]; 
    // now I want to remove the characters in the range 
    // of indices [k, this.length) 
} 
+3

Две вещи: не изменяйте встроенные свойства (вы можете касаться того, чего не знаете, есть) и не пытайтесь изменить строку на месте (она не будет работать). –

+4

'' aaaabbccccdeeeaaaaa ".replace (/ ([a-z]) \ 1 +/gi, '$ 1')' –

+0

Вы используете вместо char [i] charAt (i). Регулярное выражение - лучший вариант. –

ответ

2

Это очень просто с помощью регулярных выражений заменить:

var result = "aaaabbccccdeeeaaaaa".replace(/(.)\1+/g,"$1"); 
 

 
console.log(result);

В регулярных выражениях я показал, (.) соответствует любому символу, а затем \1 - это обратная ссылка на все, что сопоставляется в круглых скобках с +, что означает один или несколько из них. Сделайте глобальную замену флагом g. И в строке замены используется $1, чтобы использовать совпадение в круглых скобках.

Смежные вопросы