我正在尝试修改cla
代码段,但也失败了。
这是片段
snippet cla class .. end
class ${1:`substitute(Filename(), '^.', '\u&', '')`}
${2}
自动获取文件名并将其转换为
this_is_filename.rb => This_is_filename
我对它不满意。我宁愿想要它
this_is_filename.rb => ThisIsFilename
怎么做?
答案 0 :(得分:3)
这会将文件名转换为camelCase
substitute(Filename(), '_\(.\)', '\U\1', 'g')
但是看起来你想要PascalCase。这适用于PascalCase
substitute(Filename(), '\%(^\|_\)\(.\)', '\U\1', 'g')
答案 1 :(得分:0)
不确定您使用的是哪种语言,但(?:\A|_)(\w)
会捕获第一个字母以及_
后跟一个字母。但是,只有字母(在字符串的开头或_
之后)才会出现在匹配组中。这意味着使用字符串this_is_filename.rb
,您将匹配t
(组1:t
),_i
(组1:i
)和{{1 (第1组:_f
)。然后,您可以将匹配替换为第一组的大写版本。很抱歉我缺少一个更好的例子,但在PHP中你可以这样做:
f
此表达式的工作原理是捕获字符串的开头(echo preg_replace_callback(
'/(?:\A|_)(\w)/',
function($matches) {
return strtoupper($matches[1]);
},
'this_is_filename.rb'
);
)或非捕获组中的下划线,然后是包含在其中的“单词”字符(\A
)。第一场比赛组。这样你可以用第一个匹配组的大写版本替换下划线和字符。