Javascript/jQuery:拆分camelcase字符串并添加连字符而不是空格
我可以想象这是一个由多个部分组成的正则表达式,但是如何在大写字母处拆分camelcase字符串,将其转换为小写字母,然后在每个新字符串之间添加连字符 例如: 这串 将成为: 这根绳子 尝试以下方法:Javascript/jQuery:拆分camelcase字符串并添加连字符而不是空格,javascript,regex,split,camelcasing,Javascript,Regex,Split,Camelcasing,我可以想象这是一个由多个部分组成的正则表达式,但是如何在大写字母处拆分camelcase字符串,将其转换为小写字母,然后在每个新字符串之间添加连字符 例如: 这串 将成为: 这根绳子 尝试以下方法: var myStr = 'thisString'; myStr = myStr.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(); 请尝试以下操作: var token = document.getElementsByTagName('stron
var myStr = 'thisString';
myStr = myStr.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
请尝试以下操作:
var token = document.getElementsByTagName('strong')[0].innerHTML,
replaced = token.replace(/[a-z][A-Z]/g, function(str, offset) {
return str[0] + '-' + str[1].toLowerCase();
});
alert(replaced);
示例-
字符串replace
函数的文档:
回答晚了,但此解决方案适用于单个字母采用驼峰式大小写的情况
'thisIsATest'.replace(/([a-zA-Z])(?=[A-Z])/g, '$1-').toLowerCase(); // this-is-a-test
我不知道为什么所有这些解决方案都这么复杂,但我只是觉得这就足够了:
function camelCaseToDash(input){
// replace Capital letter with the letter + a dash: '-', then lowercase everything.
return input.replace(/([A-Z])/g, '-$1').toLowerCase();
}
//or, using a callback function, directly lowercasing.
function camelCaseToDashCallback(input){
//replace capital letter with lowercase variant + a dash '-'.
return input.replace(/([A-Z])/g, (x)=> "-"+ x.toLowerCase());
}
一般来说,选项1的速度更快:在您的示例中,您没有保留大写字母,您的意思是
这个字符串
?我认为@user1048007希望保留大写字母,但保留小写字母。Wouter是正确的。它应该以小写结尾。我想你需要。toLowerCase,但不管怎样,我得到的是-这个字符串可能想要在那里加上一个/g:myStr.replace(/([a-z])([a-z])/g,'$1-$2')。toLowerCase()太棒了!下面是CoffeeScript Polyfill:String::toDash?=->@replace(/([a-z])([a-z])/g,'$1-$2')。toLowerCase()
function camelCaseToDash(input){
// replace Capital letter with the letter + a dash: '-', then lowercase everything.
return input.replace(/([A-Z])/g, '-$1').toLowerCase();
}
//or, using a callback function, directly lowercasing.
function camelCaseToDashCallback(input){
//replace capital letter with lowercase variant + a dash '-'.
return input.replace(/([A-Z])/g, (x)=> "-"+ x.toLowerCase());
}