diff --git a/src/utils/parse-utils.ts b/src/utils/parse-utils.ts new file mode 100644 index 00000000..3f2dd86d --- /dev/null +++ b/src/utils/parse-utils.ts @@ -0,0 +1,76 @@ +/** + * 解析首字母转大写 + * @param str 字符串 ab + * @returns 结果 Ab + */ +export function parseFirstUpper(str: string): string { + if (!str) return str; + str = str.replace(/[^_\w]+/g, ''); + return str.substring(0, 1).toUpperCase() + str.substring(1); +} + +/** + * 解析下划线转驼峰 + * @param str 字符串 a_b + * @returns 驼峰风格 aB + */ +export function parseStrLineToHump(str: string): string { + if (!str) return str; + return str.replace(/_(\w)/g, (_item, letter) => letter.toUpperCase()); +} + +/** + * 解析驼峰转下划线 + * @param str 字符串 aB + * @returns 下划线风格 a_b + */ +export function parseStrHumpToLine(str: string): string { + if (!str) return str; + return str.replace(/([A-Z])/g, '_$1').toLowerCase(); +} + +/** + * 对象的key值驼峰转下划线 + * @param obj 对象属性 字符数组orJSON对象 + * @returns 驼峰转下划线 + */ +export function parseObjHumpToLine(obj: any): any { + if (Array.isArray(obj)) { + return obj.map(v => parseObjHumpToLine(v)); + } + if (typeof obj === 'object') { + Object.keys(obj).forEach(key => { + const new_key = parseStrHumpToLine(key); + if (new_key !== key) { + obj[new_key] = obj[key]; + delete obj[key]; + } + obj[new_key] = parseObjHumpToLine(obj[new_key]); + }); + return obj; + } + return obj; +} + +/** + * 对象的key值下划线转驼峰 + * @param obj 对象属性 字符数组orJSON对象 + * @returns 下划线转驼峰 + */ +export function parseObjLineToHump(obj: any): any { + if (Array.isArray(obj)) { + return obj.map(v => parseObjLineToHump(v)); + } + if (typeof obj === 'object') { + Object.keys(obj).forEach(key => { + const new_key = parseStrLineToHump(key); + if (new_key !== key) { + obj[new_key] = obj[key]; + delete obj[key]; + } + obj[new_key] = parseObjLineToHump(obj[new_key]); + }); + return obj; + } + return obj; +}