gpt4 book ai didi

javascript - 当字符串中的单词不以空格分隔时,将字符串转换为脊椎大小写

转载 作者:行者123 更新时间:2023-11-28 04:08:50 25 4
gpt4 key购买 nike

脊髓格是用破折号分隔单词。我有以下代码,如果单词由空格分隔,则该代码有效,但如果您有一个单词不由空格分隔的字符串,则无效,如下所示:“ThisIsSpinalCase”,它应该返回“this-is-spinal-case”。想不出一种方法来识别 str 中的每个新单词。建议?

function spinalCase(str) {
return str.replace(/[\s\W_]/g, "-").toLowerCase();

}

spinalCase('This_is spinal case'); // returns this-is-spinal-case

编辑:我意识到我可以检查何时有新的大写字母,但这需要在最后一个单词和下一个单词之间添加空格

最佳答案

流程是这样的:

  1. 第一个字母不会改变任何内容,所以将其释放。
  2. 在字符串的其余部分,有两个条件:

    • 您只有一个空格或下划线,那么您应该将其替换为破折号。
    • 您有一个大写字母,那么您应该将其替换为破折号,后跟该字母。

    但是,您可以通过调用替换来解决这两个条件,只需一次替换 replace(/(([A-Z])|[\s_])+/g, "-$2"),这意味着:

    • 如果正则表达式匹配空格或下划线,它将仅用短划线替换($2 将不匹配任何内容,因为它不匹配大写字母)。
    • 如果正则表达式与大写字母匹配,它将用破折号后跟该字母替换($2 将具有该字母的值)。
  3. 我们将第一个字母与其余字母连接起来(替换后)。
  4. 我们将结果小写。
  5. 完成!

示例:

function spinalCase(str) {
return (str[0] + str.substr(1).replace(/(([A-Z])|[\s_])+/g, "-$2")).toLowerCase();
}

关于javascript - 当字符串中的单词不以空格分隔时,将字符串转换为脊椎大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46478106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com