Newer
Older
smartwell_front / src / utils / String.ts
liyaguang on 28 Mar 2 KB 泄露监测完成

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;
}