如何在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
相关产品推荐
相关产品推荐

