You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在VS Code代码片段中将kebab-case文件名转为pascal-case组件名

解决VS Code代码片段中多短横线kebab-case文件名转PascalCase的问题

当前你的VS Code代码片段正则仅能处理最多两个单词的kebab-case文件名,遇到三个及以上单词(如one-two-three.tsx)时,无法将所有短横线分隔的单词首字母转为大写并移除短横线,导致输出OneTwo-three而非预期的OneTwoThree。

修正方案

将原正则替换为全局匹配并处理所有短横线分隔单词的表达式:

${TM_FILENAME_BASE/(?:^|-)([a-z])/${1:/capitalize}/g}

正则逻辑解释

  • (?:^|-):非捕获分组,匹配字符串开头或短横线(仅用于定位,不参与替换)
  • ([a-z]):捕获短横线后(或字符串开头)的小写字母
  • ${1:/capitalize}:将捕获的小写字母转为大写
  • g:全局标志,确保处理所有符合条件的匹配项

修正后的完整代码片段

"react component": {
    "prefix": [
        "rc",
        "erc"
    ],
    "body": [
        "import { type FC } from 'react'",
        "import styles from './${TM_FILENAME_BASE}.module.sass'",
        "",
        "export const ${TM_FILENAME_BASE/(?:^|-)([a-z])/${1:/capitalize}/g}: FC<${TM_FILENAME_BASE/(?:^|-)([a-z])/${1:/capitalize}/g}Props> = (props) => {",
        "  const {  } = props;",
        "",
        "  return (",
        "    <div>",
        "       $2",
        "    </div>",
        "  );",
        "};",
        "",
        "export type ${TM_FILENAME_BASE/(?:^|-)([a-z])/${1:/capitalize}/g}Props = {",
        "  ",
        "}",
        "",
    ],
    "description": "React Component with typed props and imported styles"
}

测试结果

  • modal.tsx → Modal(符合预期)
  • react-modal.tsx → ReactModal(符合预期)
  • one-two-three.tsx → OneTwoThree(符合预期)

内容的提问来源于stack exchange,提问作者Begench Geldyev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 20:42:07