Javascript 删除文件名的扩展名,并使用regex-vscode片段将camelCase转换为snake-case?

Javascript 删除文件名的扩展名,并使用regex-vscode片段将camelCase转换为snake-case?,javascript,regex,vscode-snippets,Javascript,Regex,Vscode Snippets,我需要在同一个结构上创建多个文件。导出的模块与文件名有一定的关系。我必须皈依。示例输入和输出 startNewGame.ts => start-new-game gameOver.ts => game-over ALongNameForAFile.ts=> a-long-name-for-file short.ts => short 我现在的正则表达式是 ${TM_FILENAME/([A-Z])/-${1:/downcase}/g} 现在我只能删除这么小的大写字母,

我需要在同一个结构上创建多个文件。导出的模块与文件名有一定的关系。我必须皈依。示例输入和输出

startNewGame.ts => start-new-game
gameOver.ts => game-over
ALongNameForAFile.ts=> a-long-name-for-file
short.ts => short
我现在的正则表达式是

${TM_FILENAME/([A-Z])/-${1:/downcase}/g}
现在我只能删除这么小的大写字母,然后添加
-
。有两个问题

  • 我无法删除
    .ts
  • 开始时有额外的
    -

注意:我在vscode代码段中使用此代码段

您可以使用此代码段:

const arr=['startNewGame.ts','gameOver.ts',
'alongnameforfile.ts','short.ts'];
arr.forEach(s=>{
console.log(
s、 替换(/(?!^)(?=[A-Z])/g'-')。替换(/\。\w+$/,'')。toLowerCase()
);

});您可以使用此代码段:

const arr=['startNewGame.ts','gameOver.ts',
'alongnameforfile.ts','short.ts'];
arr.forEach(s=>{
console.log(
s、 替换(/(?!^)(?=[A-Z])/g'-')。替换(/\。\w+$/,'')。toLowerCase()
);

});
您即将删除文件扩展名:请改用
TM\u FILENAME\u BASE
。看

由于前导的
-
只有在开头有大写字母时才会出现,因此我发现单独处理该情况最容易。因此,正则表达式现在是:

(^[A-Z])|([A-Z])
//顺序很重要


${2:+-}
是一个条件,仅当存在捕获组2时才添加
-

您即将删除文件扩展名:改用
TM\u FILENAME\u BASE
。看

由于前导的
-
只有在开头有大写字母时才会出现,因此我发现单独处理该情况最容易。因此,正则表达式现在是:

(^[A-Z])|([A-Z])
//顺序很重要


${2:+-}
是一个条件,仅当存在捕获组2时才添加
-

如何将此用于vscode片段?抱歉,不知道
vscode片段
。我提供了Javascript解决方案,因为这是一个讨论中使用的标记。如果您使用单个正则表达式,它将在代码段中工作。大小写不适合regen如何将其用于vscode代码段?抱歉,不知道
vscode代码段
。我提供了Javascript解决方案,因为这是一个问题中使用的标记。如果你制作一个单一的正则表达式,它将在代码段中工作。大写到小写不适用于regen在开始时处理额外的
-
,我只看到这个文件名:
alongnameforfile.ts
是的,我也发现了感谢。我编辑了答案。让我知道这是否有效。在开始时处理额外的
-
,我只看到这个文件名:
和文件名.ts
是的,我也找到了谢谢。我编辑了答案。让我知道这是否有效。
"filename change": {
  "prefix": "_co",
  "body": [
    "${TM_FILENAME_BASE/(^[A-Z])|([A-Z])/${2:+-}${2:/downcase}${1:/downcase}/g}",
  ],
  "description": ""
},