Spinal Tap Case-连接符连接小写单词

本文介绍了一种将任意字符串转换为spinal-case格式的方法,即所有单词均为小写并由连字符连接。通过示例展示了如何处理不同类型的输入,包括驼峰命名法、特殊字符及混合大小写的单词。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:

将字符串转换为 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("thisIsSp%inal*Tap") 应该返回 "this-is-spinal-tap"
 
spinalCase("The_Andy_Griffith_Show") 应该返回 "the-andy-griffith-show"
 
spinalCase("Teletubbies say Eh-oh") 应该返回 "teletubbies-say-eh-oh"
 
 1 function spinalCase(str) {
 2   // "It's such a fine line between stupid, and clever."
 3   // --David St. Hubbins
 4   var newStr = str.split(/-|\s|_/g);
 5   newStr = newStr.map(function(obj){  //去掉所有非单词字符
 6     return obj.replace(/\W/g,"");
 7   });
 8   if(newStr.length === 1)   //没有分割符,以大写字母分割时,加入空格
 9     {
10       newStr = newStr[0].split("");      
11       for(var i = 0;i < newStr.length;i++)
12         {
13           if(newStr[i].search(/[A-Z]/) !== -1)
14             {
15               if(i === 0)
16                 {
17                   newStr[i] = newStr[i].toLowerCase();
18                 }
19               else
20                 {
21                   newStr[i] = " " + newStr[i].toLowerCase();
22                 }
23             }
24         }
25       newStr = newStr.join("");//连接成字符串
26       newStr = newStr.split(" ");//按空格分割成单词
27     }
28   else{  //有分割符时
29    newStr = newStr.map(function(obj){
30     var rObj = obj.toLowerCase();
31     return rObj;
32       });  
33   }
34   newStr = newStr.join("-");
35   return newStr;
36 }

 

转载于:https://www.cnblogs.com/tinglee2018/p/9791489.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值