JavaScript 中的正则表达式或其他转换为骆驼式大小写的方式
Regular expression or other way to convert to camel-like case in JavaScript
我看过类似的帖子,但其中 none 处理的是这个具体案例。
我想将一些旧的命名约定转换为骆驼式大小写。但是,我希望转换仅限于以下内容:
A string(由任何大小写的字母或数字组成)后跟下划线,然后是 alphabet 应该替换为相同的字符串后跟[=24=]相同的字母表,但只有大写的字母表。而已。
一些示例:
aXc9tu_muKxx -> aXc9tuMuKxx
zdmmpFmxf -> zdmmpFmxf //unchanged
_xfefx -> _xfefx //unchanged
Z_9fefx -> Z9fefx //EDITED after getting answers.
所以,如果?在正则表达式中意味着出现 1 次或多次,并且 [] 用于指定字符范围,那么我想源表达式将是:
([0-9a-zA-Z])?_([0-9a-zA-Z])?
我愿意使用 Javascript 或任何 Linux 工具。我再次重申,转换将只涉及两个字符 _ 和紧随其后的字母,如果它确实是一个字母的话。 _ 将被删除,字母将变为大写。如果不是字母而是数字,那么只去掉下划线。
目标是转向驼峰式大小写,但保持旧命名约定的可读性,转换后可读性可能会受到影响。例如,THIS_IS_A_CONSTANT 不会更改为 THISISACONSTANT。
您可以使用 Replacement callback:
function toCamelCase(str) {
return str.replace(/(?!^)_([a-z])/g, function(matches) {
return matches[1].toUpperCase();
});
}
正则表达式的解释:
(?!^)
- 在字符串开头不匹配(您的 "_xfefx"
示例)
_
- 匹配下划线 (duh...)
([a-z])
- 匹配一个小写字母并在组 1 中捕获,matches[1]
/.../g
- "global" 匹配,即不仅替换第一个,而且替换所有出现的
我看过类似的帖子,但其中 none 处理的是这个具体案例。 我想将一些旧的命名约定转换为骆驼式大小写。但是,我希望转换仅限于以下内容:
A string(由任何大小写的字母或数字组成)后跟下划线,然后是 alphabet 应该替换为相同的字符串后跟[=24=]相同的字母表,但只有大写的字母表。而已。
一些示例:
aXc9tu_muKxx -> aXc9tuMuKxx
zdmmpFmxf -> zdmmpFmxf //unchanged
_xfefx -> _xfefx //unchanged
Z_9fefx -> Z9fefx //EDITED after getting answers.
所以,如果?在正则表达式中意味着出现 1 次或多次,并且 [] 用于指定字符范围,那么我想源表达式将是: ([0-9a-zA-Z])?_([0-9a-zA-Z])?
我愿意使用 Javascript 或任何 Linux 工具。我再次重申,转换将只涉及两个字符 _ 和紧随其后的字母,如果它确实是一个字母的话。 _ 将被删除,字母将变为大写。如果不是字母而是数字,那么只去掉下划线。
目标是转向驼峰式大小写,但保持旧命名约定的可读性,转换后可读性可能会受到影响。例如,THIS_IS_A_CONSTANT 不会更改为 THISISACONSTANT。
您可以使用 Replacement callback:
function toCamelCase(str) {
return str.replace(/(?!^)_([a-z])/g, function(matches) {
return matches[1].toUpperCase();
});
}
正则表达式的解释:
(?!^)
- 在字符串开头不匹配(您的 "_xfefx"
示例)
_
- 匹配下划线 (duh...)
([a-z])
- 匹配一个小写字母并在组 1 中捕获,matches[1]
/.../g
- "global" 匹配,即不仅替换第一个,而且替换所有出现的