[英]Regex match all hypens before colon and replace with uppercase
我当前的代码
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)
我要求在冒号之前匹配所有连字符,并将前面的字符修改为大写
例如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'
}
我可能会分别处理属性的两个部分:
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));
您可以循环浏览按键并直接重命名按键。
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];
})
谢谢,根据给出的答案,我设法解决了这个问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.