Check for Palindromes

这一题有三个考点,一个是将大写字母转换成小写,需要用到 String.toLowerCase() 方法;
第二个是如何去掉标点符号、空格,这需要用到正则表达式;
第三个是将字符串进行反转,将正读和反读进行对比;
代码如下:
function palindrome(str) {// 请把你的代码写在这里var a = str.toLowerCase().replace(/[\W\s_]/g,'');var b = a.split("").reverse().join('');return a === b;}palindrome("eye");
除此之外,还可以通过for循环来实现效果,代码如下:
function palindrome(str) {// 请把你的代码写在这里var a = str.toLowerCase().replace(/[\W\s_]/g,'');//将字符串截取一半,用for循环对比前面一半和后面一半是否相同for(var i = 0; i < a.length/2; i++){if(a[i] !== a[a.length - i - 1]){return false;}}return true;}palindrome("eye");
用for循环来实现效果也挺有意思;
在查看MDN文档时,看到一个很有趣的例子,也分享出来:
使用行内函数来修改匹配到的字符。
在这个例子中,所有出现的大写字母转换为小写,并且在匹配位置前加一个连字符。重要的是,在返回一个替换了的字符串前,在匹配元素前进行添加操作是必要的。
在返回前,替换函数允许匹配片段作为参数,并且将它和连字符进行连接作为新的片段。
function styleHyphenFormat(propertyName) {function upperToHyphenLower(match) {return '-' + match.toLowerCase();}return propertyName.replace(/[A-Z]/g, upperToHyphenLower);}
因为我们想在最终的替换中进一步转变匹配结果,所以我们必须使用一个函数。这迫使我们在使用toLowerCase()方法前进行评估。如果我们尝试不用一个函数进行匹配,那么使用toLowerCase() 方法将不会有效。
版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明。
