Удалить последовательные повторяющиеся символы с помощью регулярных выражений - PullRequest
0 голосов
/ 11 декабря 2018

Ну, у меня есть следующий тип ввода и желаемый вывод. Что я в основном хочу сделать, это удалить последовательно повторяющиеся символы (оставьте первый символ удаленным, все последующие последовательно повторяющиеся символы).

input = dup(["abracadabra","allottee","assessee"])
output = ["abracadabra","alote","asese"].

input = dup(["kelless","keenness"])
output =  ["keles","kenes"]

Это то, что я делал до сих пор.

let arr1 = ["abracadabra", "allottee", "assessee"];
let arr2 = ["kelless", "keenness"];

function dup(input) {
  return input.map(e => {
    let tempOp = ''
    for (let i = 0; i < e.length; i++) {
      if (i === 0) tempOp += e[i];
      else if (e[i - 1] !== e[i]) tempOp += e[i]
    }
    return tempOp;
  })
}
console.log(dup(arr1))
console.log(dup(arr2))

Я могу сделать это с помощью цикла.Но есть ли другой лучший способ сделать это.Могу ли я сделать это с помощью регулярных выражений, если да, любое направление очень поможет.

1 Ответ

0 голосов
/ 11 декабря 2018

Вы можете попробовать следующее регулярное выражение:

(.)\1+

и затем заменить совпадения на $1.Это означает:

Заменить несколько вхождений на совпадение первой группы захвата, равное . (соответствует любому символу только один раз).

let arr = [
  'abracadabra',
  'allottee',
  'assessee',
  'Gooooooooooooooogle',
  'Vacuum'
];

arr = arr.map(val => val.replace(/(.)\1+/g, '$1'));
console.log(arr);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...