我认为这是regex的多部分情况,但是如何将大写字母的camelcase字符串拆分为小写字母,然后在每个新字符串之间添加连字符?
例如:
thisString
会变成:
此字符串
答案 0 :(得分:123)
尝试类似:
var myStr = 'thisString';
myStr = myStr.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
答案 1 :(得分:19)
最近回答,但这个解决方案适用于单个字母骆驼套装的情况。
'thisIsATest'.replace(/([a-zA-Z])(?=[A-Z])/g, '$1-').toLowerCase(); // this-is-a-test
答案 2 :(得分:5)
尝试以下方法:
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);
示例 - http://jsfiddle.net/7DV6A/2/
字符串replace
函数的文档:
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/replace
答案 3 :(得分:1)
String.prototype.camelCaseToDashed = function(){
return this.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
}
// Usage
"SomeVariable".camelCaseToDashed();
答案 4 :(得分:1)
我不知道为什么所有这些解决方案都如此复杂,但我发现这已经足够了:
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更快:https://jsfiddle.net/4557z/17/