You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Angular中替换字符串内的styleClass为Class?

替换JSON字符串中的指定键名

需求说明

原始JSON字符串:

"{\"rows\":[{\"columns\":[{\"styleClass\":\"col-md-3\"},{\"styleClass\":\"col-md-3\"},{\"styleClass\":\"col-md-3\"},{\"styleClass\":\"col-md-3\"}]},{\"columns\":[{\"styleClass\":\"col-md-6\"},{\"styleClass\":\"col-md-6\"}]}]}"

需要将所有styleClass键名替换为Class,得到目标字符串:

"{\"rows\":[{\"columns\":[{\"Class\":\"col-md-3\"},{\"Class\":\"col-md-3\"},{\"Class\":\"col-md-3\"},{\"Class\":\"col-md-3\"}]},{\"columns\":[{\"Class\":\"col-md-6\"},{\"Class\":\"col-md-6\"}]}]}"

方法一:直接字符串替换(简单场景)

如果能确定"styleClass"仅作为键名出现,不会在字符串值等其他位置出现,直接用全局字符串替换即可,不同语言实现如下:

Python

original_str = '{"rows":[{"columns":[{"styleClass":"col-md-3"},{"styleClass":"col-md-3"},{"styleClass":"col-md-3"},{"styleClass":"col-md-3"}]},{"columns":[{"styleClass":"col-md-6"},{"styleClass":"col-md-6"}]}]}'
target_str = original_str.replace('"styleClass"', '"Class"')
print(target_str)

JavaScript

const originalStr = '{"rows":[{"columns":[{"styleClass":"col-md-3"},{"styleClass":"col-md-3"},{"styleClass":"col-md-3"},{"styleClass":"col-md-3"}]},{"columns":[{"styleClass":"col-md-6"},{"styleClass":"col-md-6"}]}]}';
const targetStr = originalStr.replace(/"styleClass"/g, '"Class"');
console.log(targetStr);

方法二:解析JSON后修改(更可靠)

若担心字符串替换会误改其他内容,更稳妥的方式是先将字符串解析为JSON对象,遍历修改指定键名后再转回字符串:

Python

import json

original_str = '{"rows":[{"columns":[{"styleClass":"col-md-3"},{"styleClass":"col-md-3"},{"styleClass":"col-md-3"},{"styleClass":"col-md-3"}]},{"columns":[{"styleClass":"col-md-6"},{"styleClass":"col-md-6"}]}]}'
data = json.loads(original_str)

# 递归遍历修改键名
def replace_key(obj, old_key, new_key):
    if isinstance(obj, dict):
        new_obj = {}
        for k, v in obj.items():
            new_obj[new_key if k == old_key else k] = replace_key(v, old_key, new_key)
        return new_obj
    elif isinstance(obj, list):
        return [replace_key(item, old_key, new_key) for item in obj]
    else:
        return obj

modified_data = replace_key(data, "styleClass", "Class")
target_str = json.dumps(modified_data)
print(target_str)

JavaScript

const originalStr = '{"rows":[{"columns":[{"styleClass":"col-md-3"},{"styleClass":"col-md-3"},{"styleClass":"col-md-3"},{"styleClass":"col-md-3"}]},{"columns":[{"styleClass":"col-md-6"},{"styleClass":"col-md-6"}]}]}';
const data = JSON.parse(originalStr);

// 递归遍历修改键名
function replaceKey(obj, oldKey, newKey) {
    if (Array.isArray(obj)) {
        return obj.map(item => replaceKey(item, oldKey, newKey));
    } else if (obj !== null && typeof obj === 'object') {
        return Object.fromEntries(
            Object.entries(obj).map(([key, value]) => 
                [key === oldKey ? newKey : key, replaceKey(value, oldKey, newKey)]
            )
        );
    }
    return obj;
}

const modifiedData = replaceKey(data, "styleClass", "Class");
const targetStr = JSON.stringify(modifiedData);
console.log(targetStr);

内容的提问来源于stack exchange,提问作者Matt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 05:10:19