我当前的代码
var test = {
'font-family-regular': 'Helvetica-Neue',
'font-family-bold': 'Helvetica-Neue-Bold'
}
var styles = JSON.stringify(test);
styles = styles.replace(/(-.)/g, function(x) {
return x[2].toUpperCase()
});
console.log(styles)

我要求在冒号前匹配所有连字符,并将前面的字符修改为大写
e.g。 font-family-regular:' Helvetica-Neue'
应该成为:fontFamilyRegular:' Helvetica-Neue'
我目前使用的正则表达式替换了所有连字符,包括' Helvetica-Neue'
text.replace(/(-.)/g, function(x){return x[1].toUpperCase()})
我希望上面的例子看起来像:
var test = {
fontFamilyRegular: 'Helvetica-Neue',
fontFamilyBold: 'Helvetica-Neue-Bold'
}
答案 0 :(得分:2)
我可能会独立处理属性的两个部分:
var text = "font-family-regular: 'Helvetica-Neue'";
var keyValue = text.split(':');
var result = keyValue
.shift()
.replace(/(-.)/g, function(x){
return x[1].toUpperCase()
}) + ':' + keyValue.join(' ');
alert(result);

或者更新了您的问题:
var test = {
'font-family-regular': 'Helvetica-Neue',
'font-family-bold': 'Helvetica-Neue-Bold'
}
var style = {};
for (var key in test) {
var newKey = key.replace(/(-.)/g, function(x) {
return x[1].toUpperCase();
});
style[newKey] = test[key];
}
alert(JSON.stringify(style));

答案 1 :(得分:0)
您可以循环键并直接重命名键。
Object.keys(test).forEach(function(item){
var newItem = item.replace(/\s*-\s*./g, function(x){
return x[x.length-1].toUpperCase();
});
test[newItem]=test[item];
delete test[item];
})
答案 2 :(得分:0)
谢谢大家,根据给出的答案,我设法让这个工作。