freeCodeCamp/guide/chinese/certifications/javascript-algorithms-and-d.../intermediate-algorithm-scri.../spinal-tap-case/index.md

6.3 KiB
Raw Blame History

title localeTitle
Spinal Tap Case 脊椎龙头套

:triangular_flag_on_post:如果卡住,请记得使用**Read-Search-Ask** 。尝试配对程序:busts_in_silhouette:并编写自己的代码:pencil:

:checkered_flag:问题说明:

将给定的字符串转换为带有由短划线连接的单词的小写句子。

相关链接

:speech_balloon:提示1

为所有空格和下划线创建正则表达式。

现在尝试解决问题

:speech_balloon:提示2

您还必须将所有内容都设为小写。

现在尝试解决问题

:speech_balloon:提示3

棘手的部分是让正则表达式部分工作,一旦你这样做,然后只需将大写字母转换为小写,并使用replace()用下划线替换空格。

现在尝试解决问题

扰流警报!

警告牌

提前解决!

:beginner:基本代码解决方案

function spinalCase(str) { 
  // Create a variable for the white space and underscores. 
  var regex = /\s+|_+/g; 
 
  // Replace low-upper case to low-space-uppercase 
  str = str.replace(/([az])([AZ])/g, '$1 $2'); 
 
  // Replace space and underscore with - 
  return str.replace(regex, '-').toLowerCase(); 
 } 
 
 // test here 
 spinalCase('This Is Spinal Tap'); 

:rocket: 运行代码

代码说明:

  • 正则表达式包含正则表达式/\s+|_+/g ,它将选择所有空格和下划线。
  • 第一个replace()在字符串str中遇到任何大写字符之前放置一个空格,以便稍后可以用短划线替换空格。
  • 返回字符串时,另一个replace()使用正则表达式用空格替换空格和下划线。

:sunflower:中级代码解决方案:

function spinalCase(str) { 
  // Replace low-upper case to low-space-uppercase 
  str = str.replace(/([az])([AZ])/g, '$1 $2'); 
  // Split on whitespace and underscores and join with dash 
  return str.toLowerCase().split(/(?:_| )+/) .join('-'); 
 } 
 
 // test here 
 spinalCase('This Is Spinal Tap'); 

:rocket: 运行代码

代码说明:

  • 与第一个解决方案类似,第一个replace()在字符串str中遇到任何大写字符之前放置一个空格,以便稍后可以用短划线替换空格。
  • 这里的字符串是正则表达式/(?:_| )+/join() - ed on -上的split() ,而不是使用replace()来替换空格和下划线。

相关链接

:rotating_light:高级代码解决方案

function spinalCase(str) { 
  // "It's such a fine line between stupid, and clever." 
  // --David St. Hubbins 
 
  return str.split(/\s|_|(?=[AZ])/).join('-').toLowerCase() 
 } 

:rocket: 运行代码

代码说明:

  • 在以下条件之一拆分字符串( 转换为数组
    • 遇到空白字符[ \s ]
    • 遇到下划线字符[ _ ]
    • 或后跟大写字母[ (?=[AZ]) ]
  • 使用连字符( - )加入数组
  • 小写整个结果字符串

相关链接

:clipboard:捐款说明:

  • :warning: 请勿添加与任何现有解决方案类似的解决方案。如果您认为它**相似但更好** ,那么尝试合并(或替换)现有的类似解决方案。
  • 添加解决方案的说明。
  • 将解决方案分为以下类别之一 - 基本 中级高级:traffic_light:
  • 如果您添加了任何**相关的主要内容,**请仅添加您的用户名。 :warning: 不要 删除任何现有的用户名

看到:point_right: Wiki Challenge Solution Template供参考。