今天在codewars上尝试解决一个小问题,题目是要求把一行文字里的所有元音字母替换掉,心想这个应该挺简单的吧,一个replaceAll应该就可以了,结果发现JS里面没有带replaceAll这个方法,想通过for循环实现起来效率太低了,于是就google了一下,发现replace方法是支持正则表达式替换的,就是把所有匹配到的结果都替换掉,我们来看一下我的实现(方法太渣。。后面有大神的终极方法):
function disemvowel(str) { var s = str var vowels = new Array('a','i','e','u','o','A','I','E','U','O') for(i in vowels) { s = s.replace(new RegExp(vowels[i],"g"),'') } return s }
RegExp的”g”参数代表匹配所有符合的位置。
来看看大神的实现,果然言简意赅:
function disemvowel(str) { return str.replace(/[aeiou]/gi, ''); }
大神,求带!
我不是大神。。大神在Code Wars上,看看这篇文章:http://www.boydwang.com/2014/03/3-fun-ways-to-level-up-your-coding-skills/