代码之家  ›  专栏  ›  技术社区  ›  Naismith

将VSCode用户代码片段中的Pascal Case转换为Kebab Case

  •  1
  • Naismith  · 技术社区  · 6 年前

    我正在尝试编写一个用户代码段,它将使用 ${1} (例如JobsSummary)并将其转换为烤肉串案例(jobs summary)。

    "Example": {
        "prefix": "test",
        "body": [
          "${1}",
          "${1} -> ${1/(^.)+([A-Z])+/${1:/downcase}/}"
        ]
    }
    

    将visualstudio代码用户片段中的变量从Pascal Case转换为Kebab Case的正确方法是什么?

    JobsSummary -> jobs-summary

    AnotherExampleOfSomething another-example-of-something

    1 回复  |  直到 6 年前
        1
  •  2
  •   Mark    6 年前

    "Example": {
      "prefix": "psc",
      "body": [
        "${1}",
        "${1} -> ${1/([A-Z][a-z]*)([A-Z][a-z]*)?([A-Z][a-z]*)?([A-Z][a-z]*)?/${1:/downcase}${2:+-}${2:/downcase}${3:+-}${3:/downcase}${4:+-}${4:/downcase}/}"
      ],
      "description": "Convert from PascalCase to kebab-case"
    },
    

    通常,我可以用一个更短的版本——使用全局修饰符——来处理任何数量的“单词”。但在这件事上我没能做到。上面的代码是硬编码的,最多有四个“单词”,比如 PascalCaseThreeFour .

    它适用于1到4个“单词”,但不适用于更多单词,但很容易对您进行修改,以满足您的需要。有一个明显的模式来增加更多。

    这个 ${3:+-}

    编辑 :以下简化将处理Pascalase中任意数量的单词:

    "${1} -> ${1/([A-Z][a-z]+)/${1:/downcase}-/g}$0"
    

    但会导致跟踪 - 是这样的:

    PascalCaseThreeFourFive -> pascal-case-three-four-five- 如果你不介意在后面的破折号上退格 - . 否则,很容易将此片段合并到 然后删除了最后一个破折号。

    change-case extension 可能对你有用-它看起来有烤肉串案例命令。

        2
  •  1
  •   maxim    5 年前

    这适用于Pascalase中任何数量的单词,并且没有尾随破折号:

    "${TM_SELECTED_TEXT} -> ${TM_SELECTED_TEXT/(^[A-Z][a-z]*|[a-z])([A-Z])?/${1:/downcase}${2:+-}${2:/downcase}/g}"
    

    AnotherExampleOfSomething -> another-example-of-something
    

    the rules 较长的首字母缩略词应该使用camel/Pascal大小写(这很好)。