Javascript正则表达式 - 将驼峰命名转换为文件命名

5

有没有javascript的正则表达式可以将:

someCamelCase转换为some-file-case

或者

SomeCamelCase转换为some-file-case

??

如果有的话,那会非常有帮助。

谢谢。


我认为你不能使用正则表达式来改变大小写。我建议尝试使用标准循环。 - LatinSuD
3个回答

6
您可以编写一个简单的正则表达式来捕获紧挨着大写字母的小写字母,将两者之间插入破折号并将结果全部转换为小写。
例如:
function fileCase(str) {
  return str.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
}

fileCase('SomeCamelCase'); // "some-camel-case"
fileCase('someCamelCase'); // "some-camel-case"

1

试试这个。

"SomeCamelCase".replace(/[A-Z]/g, function(m){return '_' + m.toLowerCase();});

或者作为一个函数

function camelToHiphen(str){
    return str.replace(/[A-Z]/g, function(m){return '_' + m.toLowerCase();});
}

1
这会返回“_some_camel_case”。从字符串中删除第一个下划线可能是个好主意。否则,+1它就可以工作。 - Benbob
抱歉,还没有测试过。只是在脑海中构建了代码。 :) - gianebao

0

驼峰式与连字符式转换方法:

免责声明:我不赞成以下方式破坏字符串原型。

这是一个字符串原型方法,用于将驼峰式转换为连字符式,并考虑大写开头的字符。

String.prototype.camelToHyphen = function() {
  return this.replace(/((?!^)[A-Z])/g, '-$1').toLowerCase();
};

这个解决方案是我寻找完全相反的东西时得出的。
String.prototype.hyphenToCamel = function() {
  return (/-[a-z]/g.test(this)) ? this.match(/-[a-z]/g).map(function(m, n){
    return m.replace(n, n.toUpperCase()[1]);
  }, this) : this.slice(0);
};

我想这些问题很常见,但我立即找不到以这种方式总结它们的任何资料。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接