Spinal Tap Case(freecodecamp)

将字符串转换为 spinal case。Spinal case 是 all-lowercase-words-joined-by-dashes 这种形式的,也就是以连字符连接所有小写单词。

示例:

spinalCase("This Is Spinal Tap") 应该返回 "this-is-spinal-tap"。
spinalCase("thisIsSpinalTap") 应该返回 "this-is-spinal-tap"。
spinalCase("The_Andy_Griffith_Show") 应该返回 "the-andy-griffith-show"。
spinalCase("Teletubbies say Eh-oh") 应该返回 "teletubbies-say-eh-oh"。

 

 1 <html>
 2     <head>
 3         <title></title>
 4         <script type="text/javascript">
 5             window.onload = function(){
 6                 function spinalCase(str) {
 7                 
 8                     //str = str.replace(/\s|_/g,"-");
 9                     function upperToHyphenLower(match,p1,p2,offset){
10                         //match:所匹配的子串(如:_A)
11                         //p1,p2:第n个括号匹配的串(如:_)
12                         //offset:匹配到的子串在原串中的偏移量(如:匹配到This中的T,此时offset=0)
13                         match = match.replace(p1,"");
14                         match = match.replace(p2,"");//将空格、下划线移除
15                         if(offset === 0){
16                             return match.toLowerCase();
17                         }else{
18                             return "-"+match.toLowerCase();
19                         }
20                         
21                     }
22                     //([ _]?)[A-Z]
23                     //后边在加上([ _]),是为了匹配到Teletubbies say
24                     return str.replace(/([ _]?)[A-Z]|([ _])/g,upperToHyphenLower);
25                 }
26 
27                 spinalCase('This Is spinal tap');
28                 spinalCase('The_Andy_Griffith_Show');
29                 spinalCase('Teletubbies say Eh-oh');
30             }
31         </script>
32     </head>
33     <body>
34     
35     </body>
36 </html>

 

replace方法

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/replace

 

posted @ 2017-08-24 16:58  随风而逝XXX  Views(240)  Comments(0Edit  收藏  举报