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()
方法将不会有效。
版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明。