Check for Palindromes

check.png
这一题有三个考点,一个是将大写字母转换成小写,需要用到 String.toLowerCase() 方法;
第二个是如何去掉标点符号、空格,这需要用到正则表达式;
第三个是将字符串进行反转,将正读和反读进行对比;

代码如下:

  1. function palindrome(str) {
  2. // 请把你的代码写在这里
  3. var a = str.toLowerCase().replace(/[\W\s_]/g,'');
  4. var b = a.split("").reverse().join('');
  5. return a === b;
  6. }
  7. palindrome("eye");

除此之外,还可以通过for循环来实现效果,代码如下:

  1. function palindrome(str) {
  2. // 请把你的代码写在这里
  3. var a = str.toLowerCase().replace(/[\W\s_]/g,'');
  4. //将字符串截取一半,用for循环对比前面一半和后面一半是否相同
  5. for(var i = 0; i < a.length/2; i++){
  6. if(a[i] !== a[a.length - i - 1]){
  7. return false;
  8. }
  9. }
  10. return true;
  11. }
  12. palindrome("eye");

用for循环来实现效果也挺有意思;

在查看MDN文档时,看到一个很有趣的例子,也分享出来:

使用行内函数来修改匹配到的字符。

在这个例子中,所有出现的大写字母转换为小写,并且在匹配位置前加一个连字符。重要的是,在返回一个替换了的字符串前,在匹配元素前进行添加操作是必要的。
在返回前,替换函数允许匹配片段作为参数,并且将它和连字符进行连接作为新的片段。

  1. function styleHyphenFormat(propertyName) {
  2. function upperToHyphenLower(match) {
  3. return '-' + match.toLowerCase();
  4. }
  5. return propertyName.replace(/[A-Z]/g, upperToHyphenLower);
  6. }

因为我们想在最终的替换中进一步转变匹配结果,所以我们必须使用一个函数。这迫使我们在使用toLowerCase()方法前进行评估。如果我们尝试不用一个函数进行匹配,那么使用toLowerCase() 方法将不会有效。

版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明。