我正在寻找一个JS方法,将snake_case
变成PascalCase
,同时保持斜线不变。
// examples:
post -> Post
admin_post -> AdminPost
admin_post/new -> AdminPost/New
admin_post/delete_post -> AdminPost/DeletePost
等等。
我有一个可以将snake_case
转换为camelCase
并保留斜线的程序,但是在将其转换为PascalCase
时遇到了问题
以下是我目前的发现:
_snakeToPascal(string){
return string.replace(/(_\w)/g, (m) => {
return m[1].toUpperCase();
});
}
任何建议都是赞赏!
EDIT-找到解决方案
这是我最后使用的。如果你使用这个,请注意,我使用的是this._upperFirst
,因为我在课堂上使用它。它有点油腻,但它的工作。
_snakeToPascal(string){
return string.split('_').map((str) => {
return this._upperFirst(
str.split('/')
.map(this._upperFirst)
.join('/'));
}).join('');
}
_upperFirst(string) {
return string.slice(0, 1).toUpperCase() + string.slice(1, string.length);
}
6条答案
按热度按时间blmhpbnm1#
这里有一个解决方案,它可以保留斜线并将snake_case转换为PascalCase。
它首先在
'/'
字符处拆分输入,以创建需要转换的snake_case字符串数组。然后在'_'
字符处拆分这些字符串,以创建子字符串数组。然后将此数组中的每个子字符串大写,然后重新连接为单个PascalCase字符串。然后用分隔它们的'/'
字符重新连接PascalCase字符串。r1zhe5dt2#
PascalCase类似于camelCase。只是第一个字符不同。
输入:i_呼叫_车间_会话
输出:ICallShopSession
elcex8rz3#
这个应该可以了。
编辑:
通过OP中所示的所有测试用例的版本:
tvz2xvvm4#
或者类似的东西:
bbmckpt75#
wlwcrazw6#