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": ""
},