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

如何在VSCode代码片段中合并两次正则转换生成指定格式类名?

在VSCode代码片段中单次转换生成目标类名

你可以用单个正则替换表达式同时完成连字符转下划线、单词首字母大写的操作,直接得到Test_Class_File格式的类名,对应的代码片段变量是:

"${TM_FILENAME_BASE/(^[a-z]|(-)[a-z])/${2:+_}${1:/replace(-,)/:/upcase}/g}"

转换逻辑拆解

这个表达式通过全局匹配(g标志)处理两种情况:

  1. 匹配文件名开头的小写字母(^[a-z]):
    • 因为没有捕获到连字符($2为空),所以${2:+_}不会生成下划线
    • 把匹配到的字母转为大写(${1:/replace(-,)/:/upcase},这里replace(-,)用于清除无效匹配,实际仅对开头字母生效)
  2. 匹配连字符后跟的小写字母((-)[a-z]):
    • $2捕获到连字符,${2:+_}将其替换为下划线
    • 把连字符后的小写字母转为大写(${1:/replace(-,)/:/upcase}先去掉连字符,再转大写)

验证效果

对于输入文件名test-class-file.php,TM_FILENAME_BASE的值是test-class-file,经过上述转换后:

  • 开头的t转为T
  • -c转为_C
  • -f转为_F
    最终得到Test_Class_File,完全符合需求。

对比原转换逻辑

这个单个表达式同时完成了:

  • 原第一个转换的连字符转下划线操作
  • 原第二个转换的单词首字母大写操作,并且保留了单词之间的下划线分隔

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 07:43:20