Bea*_*ith 10 visual-studio-code vscode-snippets
我想创建一个用于创建redux reducer的VS Code代码段.
我想有一个占位符片段,需要camelCase,然后将匹配的占位符转换为SCREAMING_SNAKE_CASE.
这是我尝试的片段,它不起作用:
"test": {
"prefix": "test",
"body": "${1} -> ${1/([a-zA-Z])(?=[A-Z])/${1:/upcase}_/g}"
},
Run Code Online (Sandbox Code Playgroud)
这产生了不期望的结果:
changeNetworkStatus -> changE_NetworK_Status
Run Code Online (Sandbox Code Playgroud)
test(片段名称)输入changeNetworkStatus结果:
changeNetworkStatus -> changeNetworkStatus
Run Code Online (Sandbox Code Playgroud)点击tab以获得预期的结果:
changeNetworkStatus -> CHANGE_NETWORK_STATUS
Run Code Online (Sandbox Code Playgroud)如何更改我的代码段以获得所需的结果?
Mar*_*ark 12
"camelCaseModify": {
"prefix": "test",
"body": [
// first inefficient try, works for up to three words
// "${1} -> ${1/^([a-z]*)([A-Z])([a-z]+)*([A-Z])*([a-z]+)*/${1:/upcase}_$2${3:/upcase}${4:+_}$4${5:/upcase}/g}"
"${1} -> ${1/([a-z]*)(([A-Z])+([a-z]+))?/${1:/upcase}${2:+_}$3${4:/upcase}/g}"
],
"description": "underscore separators"
},
Run Code Online (Sandbox Code Playgroud)
这适用于任何数量的camelCase单词,从一个到无穷大......
的 ${2:+_}手段"如果有一个捕获组2然后追加下划线".如果没有第二个单词/捕获组,那么组3和组4将是空的,因为它们在捕获组2内.捕获组2始终是下一个单词(以一个大写开头,后跟至少一个小写字母) ).
例如,使用changeNetworkStatus:
Match 1
Full match 0-13 `changeNetwork`
Group 1. 0-6 `change`
Group 2. 6-13 `Network`
Group 3. 6-7 `N`
Group 4. 7-13 `etwork`
Match 2
Full match 13-19 `Status`
Group 1. 13-13 ``
Group 2. 13-19 `Status`
Group 3. 13-14 `S`
Group 4. 14-19 `tatus`
Match 3
Full match 19-19 ``
Group 1. 19-19 ``
Run Code Online (Sandbox Code Playgroud)
样本输出:
abcd -> ABCD
twoFish -> TWO_FISH
threeFishMore -> THREE_FISH_MORE
fourFishOneMore -> FOUR_FISH_ONE_MORE
fiveFishTwoMoreFish -> FIVE_FISH_TWO_MORE_FISH
sixFishEelsSnakesDogsCatsMiceRatsClocksRocks -> SIX_FISH_EELS_SNAKES_DOGS_CATS_MICE_RATS_CLOCKS_ROCKS
Run Code Online (Sandbox Code Playgroud)
使用regex101.com确实有助于可视化正在发生的事情!
| 归档时间: |
|
| 查看次数: |
1995 次 |
| 最近记录: |