今天在codewar做练习题时,要求写一个函数把一个字符串去掉WUB这些多余的字符然后把剩下的组成一句话输出,如传入"WUBAWUBBWUBCWUB"后返回"A B C"我的源代码是如下
function songDecoder(song){ // ... var words=song.split('WUB'); var str1=""; for(var i=0;i<words.length;i++){ if(words[i]==""){ str1=str1+words[i]+" "; } } return str1.trim(); }
先把字符串用split函数分解为数组然后遍历该数组把其中不为空字符串的数组值相加并加上空格,这样就组成了一串字符,然后通过trim去掉开始和末尾的空格。
我的解决方法非常繁琐看了其他人的答案后只需要如下写就行了
function songDecoder(song){ // ... return song.split("WUB").filter(Boolean).join(" ") }
先是用split函数然后用数组的filter函数,该函数会把数组的每一项传入括号内的函数中然后将返回结果为true的项返回组成一个新数组。而Boolean函数是将值转换为布尔值,而空字符串是为false。所以返回的数据就是去掉WUB的字符数组。然后再通过join函数转为字符串。
除了上面的这种方法还有运用正则表达式的。这种方法更简单,但是我一直不太会正则表达式。
function songDecoder(song){ return song.replace(/(WUB)+/g," ").trim() }
以上是一些常用的函数,但是由于经验不足并不能活学活用就要多练多看