Dubstep

链接

CodeWar-Dubstep

题目

Polycarpus这个人在伯兰最棒的夜总会里当DJ,他经常在他的表演中使用回响贝斯(Dubstep)。最近他决定把几首老歌和回响贝斯remix一下。

我们假设一首歌是由一些词组成的。为了把dubstep混合到这首歌里,Polycarpus在歌的第一个词之前(可能歌里一个词也没有)、最后一个词之后以及词之间(相邻两个词之间至少有一个)插入了特定的词“WUB”。然后把所有的词拼在一起,作为一个字符串,在夜总会里播放。

比如说,一首歌的词是“I AM X”。它能够转换成“WUBWUBIWUBAMWUBWUBX”,不能转换成“WUBWUBIAMWUBX”。

最近,Jonny听了Polycarpus的一首新的dubstep的曲子,但是由于他不太喜欢现代音乐,他决定找出Polycarpus混合的那首初始歌曲。帮Jonny找出原来的歌。

输入 包含一个单独的非空字符串,由英文大写字母组成,字符串长度不超过200个字符

输出 返回混合前的原始歌曲。用一个空格分割。

songDecoder("WUBWEWUBAREWUBWUBTHEWUBCHAMPIONSWUBMYWUBFRIENDWUB")
  // =>  WE ARE THE CHAMPIONS MY FRIEND

我的思路及实现

function songDecoder(song){
    var str = song.replace(/WUB/g, " ");
    str = str.replace(/^\s+|\s+$/g, "");
    strs = str.split(" ");

    var old = "";
    strs.forEach(function(value, index, arr){
      if (value != ''){
        if (index != arr.length - 1){
            old += value + " ";
        } else {
            old += value;
        }
      }
    });

    return old;
}

Best Practice

function songDecoder(song){
  return song.replace(/(WUB)+/g," ").trim()
}
function songDecoder(song){
  return song.split('WUB').filter(Boolean).join(' ');
}
var songDecoder = (song) => song.split('WUB').filter(x => x !== '').join(' ')