如何通过JavaScript CodeWars挑战?

时间:2019-07-15 05:40:10

标签: javascript

在此挑战中,我必须用空格替换字符串中的每个"WUB"。如果连续有多个"WUB",那么我必须将所有空格替换为一个空格。例如,输入"WUBAPPLEWUBWUBBANANAWUBWUBWUBCARROT"将返回"APPLE BANANA CARROT"

我还必须消除字符串开头和结尾的开头和结尾空格。我想知道如何更改代码来满足这些要求,但我对JavaScript还是很陌生。谢谢。

function songDecoder(song){
  var regex = /wub/gi;
  song = song.toLowerCase().replace(regex, ' ')
  return song.toUpperCase()
}

2 个答案:

答案 0 :(得分:1)

您在正确的轨道上,您需要做的就是添加一个量词以连续匹配多个.card-subtitle.text-muted { position: absolute; right: 1.25em; margin: 0; top:2.25em; background:blue; color:white !important; padding:2px; border-radius:5px; font-size:10px; } ,并且您还可以避免匹配后先转换为小写,而不是转换为大写正在使用WUB标志来解决不区分大小写

i

enter image description here

(?:wub)+

答案 1 :(得分:0)

由于您是新手,因此您需要了解使用正则表达式的符号:

g修饰符:全局。所有比赛(第一次比赛后不会返回)

i修饰符:不敏感。不区分大小写的匹配(忽略[a-zA-Z]的大小写)

在您的情况下,i并不重要,因为您没有捕获[a-zA-Z]

对于像 !@#$? 这样的输入,如果没有g修饰符,则正则表达式将返回第一个匹配项! See here

如果g存在,它将返回整数或它可以匹配的任何东西。 See here

let var  = "WUBAPPLEWUBWUBBANANAWUBWUBwubCARROT";
function songDecoder(song){
  var regex = /(?:wub)+/gi;
  song = song.replace(regex, ' ')
  return song.trim()
}

alert(songDecoder(str));