VSCode 在片段中链接正则表达式转换

VSCode chaining regex transforms in a snippet

我正在尝试以两种方式在 VSCode 中自动转换文件名。 假设我有 test-file-name.md,我想在我的文档中以 Test File Name 结尾。 现在我可以分别进行转换的两个部分,但我正在努力寻找如何组合它们。

  1. 要删除所有 - 并用 space 替换它们,我这样做:${TM_FILENAME_BASE/[-]/ /g}
  2. 为了将每个单词的首字母大写,我这样做:${TM_FILENAME_BASE/(\b[a-z])/${1:/upcase}/g}(我猜 \b 在这种情况下可能没用)

我已经尝试了多种将它们写在一起的方法,但我找不到一个接一个地写它们的方法。

试试这个:

"body": "${TM_FILENAME_BASE/([^-]+)(-*)/${1:/capitalize}${2:+ }/g}"

由于 g 标志,它将获取所有事件并多次对两个捕获组进行每次转换。在您的测试用例 (test-)(file-)(name) 中,那将是三倍。它应该适用于任意数量的带连字符的单词。

([^-]+) 连字符之前的所有内容。

${1:/capitalize} 将捕获组 1 大写。

${2:+ }表示如果有第二个捕获组,(-*),添加一个space。我添加这个是因为末尾没有连字符 - 因此不会有第二个捕获组,因此末尾不应添加额外的 space。