import dayjs from "dayjs" // 字符串操作方法 // 将 ALARM_CODE -> alarmCode export function toHump(name: string) { const str = name.toLowerCase() return str.replace(/\_(\w)/g, (all, letter) => { return letter.toUpperCase() }) } // js判断字母是否大写 export function isUpperCase(char: string) { return /^[A-Z]+$/.test(char) } // 将对象中所有属性转为驼峰 export function toHumpObject(data: any) { const result = {} as { [key: string]: string } for (const i in data) { if (isUpperCase(i[0])) { if (i.includes('_')) { result[toHump(i)] = data[i] } else { result[i.toLowerCase()] = data[i] } } else { result[i] = data[i] } } return result } // 颜色进制转化 十六进制转rgb export function hexToRgb(hex: string) { // 去除可能包含在颜色值中的#号 hex = hex.replace("#", ""); // 通过正则匹配提取R、G、B的十六进制值 var r = parseInt(hex.substring(0, 2), 16); var g = parseInt(hex.substring(2, 4), 16); var b = parseInt(hex.substring(4, 6), 16); // 返回RGB格式的颜色值 // return "rgb(" + r + ", " + g + ", " + b + ")"; return [r, g, b] } // ji在字符串特定位置插入换行符str 字符串 interval 指定位置 比如说5 就会在 5 10 15 20 添加 export function insertNewline(str, interval) { let result = ''; for (let i = 0; i < str.length; i += interval) { result += str.slice(i, i + interval) + (i + interval < str.length ? '</br>' : ''); } if (str.length < interval) { return str } return result; } // 验证时间是否正确 验证“YYYY-MM-DD”格式的日期 export function isValidDate(dateStr) { const regex = /^d{4}-(0[1-9]|1[0-2])-([0-2][0-9]|3[0-1])$/; if (!regex.test(dayjs(dateStr).format('YYYY-MM-DD'))) return false; const [year, month, day] = dayjs(dateStr).format('YYYY-MM-DD').split('-').map(Number); const date = new Date(year, month - 1, day); return date.getFullYear() === year && date.getMonth() === month - 1 && date.getDate() === day; } /** * 生成唯一随机字符串 * @param length - 字符串长度,默认32位 * @param prefix - 前缀字符串,可选 * @returns 唯一随机字符串 */ export function generateUniqueString(length: number = 32, prefix?: string): string { // 获取当前时间戳(毫秒级) const timestamp = Date.now().toString(36); // 转换为36进制缩短长度 // 生成随机字符串 let randomStr = ''; const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; const charsLength = chars.length; for (let i = 0; i < length; i++) { randomStr += chars.charAt(Math.floor(Math.random() * charsLength)); } // 组合结果(时间戳+随机字符串) let result = `${timestamp}-${randomStr}`; // 如果指定了前缀,添加前缀 if (prefix) { result = `${prefix}-${result}`; } // 截取到指定长度(如果超过) return result.substring(0, prefix ? prefix.length + length + timestamp.length + 2 : length + timestamp.length + 1); }