【问题标题】:Remove consecutive duplicate characters using regex使用正则表达式删除连续的重复字符
【发布时间】:2019-05-12 18:13:17
【问题描述】:

嗯,我有以下类型的输入和所需的输出。我基本上想要做的是删除连续重复的字符。(保持第一个字符删除所有以下连续重复)。

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))

我可以用 for 循环来做到这一点。但是有没有其他更好的方法来做到这一点。 如果可以的话,我可以用正则表达式来做吗?任何方向都会有很大帮助。

【问题讨论】:

标签: javascript arrays regex replace filter


【解决方案1】:

你可以试试下面的正则表达式:

(.)\1+

然后将匹配项替换为$1。这意味着:

将多个匹配项替换为第一个捕获组的匹配项,即.(任何字符仅匹配一次)。

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

arr = arr.map(val => val.replace(/(.)\1+/g, '$1'));
console.log(arr);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-03
    • 2011-07-29
    • 2011-06-02
    • 1970-01-01
    • 2018-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多