美文网首页前端學習筆記程序员Web前端之路
FreeCodeCamp筆記之:Spinal Tap Case

FreeCodeCamp筆記之:Spinal Tap Case

作者: delphuy | 来源:发表于2017-10-12 14:11 被阅读11次

    题目

    Spinal Tap Case将字符串转换为 spinal case。Spinal case 是 all-lowercase-words-joined-by-dashes 这种形式的,也就是以连字符连接所有小写单词。如果你被卡住了,记得开大招 Read-Search-Ask。尝试与他人结伴编程、编写你自己的代码。这是一些对你有帮助的资源:
    RegExp
    String.replace()

    思路

    1.意思是将所有的单词,中首字母为大写的转成小写,然后用 - 拼接起来;
    2.第一反应的做法是 将所有单词拆分成一个数组,针对数组中的每个值转换一次小写,然后在加上 - 拼接成一个字符串;
    3.but,我低估了题目的恶心;因为看到了这个:

    image.png
    • 居然还有连在一起的,下划线分开的,空格分开但是存在 - 线的....。

    4.于是乎,要改变思路了,看到题目又提示了 String.replace() ,于是乎再一次狠命的深入学习一次这个函数

    1. 主要是处理三种情况:空格 、下划线 、大写字母,用到正则表达式;
    2. 空格、下划线 正则表达式的表示: /\s|_/g ;
    3. 思路是先将空格、下划线转成 -,使用replace;
    4. 第二步对于单词之间没有分开的,直接将大写字母和小写字母中间增加 - ,同样是用replace;
    5. 将所有大写字母转为小写字母;

    解答

    function spinalCase(str) {
      // "It's such a fine line between stupid, and clever."
      // --David St. Hubbins
      return str.replace(/\s|_/g,"-")  //将 下划线和空格 替换为 - 
                .replace(/([a-z])([A-Z])/g,"$1-$2")  //大小写字母之间加上- 分隔
                .toLowerCase();   //所有字母转成小写  
    }
    spinalCase('This Is Spinal Tap');
    

    相关文章

      网友评论

        本文标题:FreeCodeCamp筆記之:Spinal Tap Case

        本文链接:https://www.haomeiwen.com/subject/rznnyxtx.html