部分工具类总结(懒人福利)

作者 : 开心源码 本文共5077个字,预计阅读时间需要13分钟 发布时间: 2022-05-13 共197人阅读

1.字符超出隐藏显示三个点

/**   * 自己设置字符串长度   * @param str 待解决字符串   * @param defaultLen 默认限制长度   * @param limitTable 能否仅限制于表格解决,表格解决主要限制 表格中字段 长度   */  static sliceStr (str: string, defaultLen = 19, limitTable = false) {    if (str) {      if (str.length > defaultLen) {        str = str.substr(0, defaultLen) + '...'      }      return str    }    if (!str && limitTable) return '/'    return str  }

2.深度比照两个对象能否相同

  static compareDeep (origin: any, target: any) {    let p    if (typeof origin === 'number' && typeof target === 'number' && isNaN(origin) && isNaN(target)) {      return true    }    if (origin === target) {      return true    }    if (typeof origin === 'function' && typeof target === 'function') {      if ((origin instanceof RegExp && target instanceof RegExp) ||      (origin instanceof String || target instanceof String) ||      (origin instanceof Number || target instanceof Number)) {        return origin.toString() === target.toString()      } else {        return false      }    }    if (origin instanceof Date && target instanceof Date) {      return origin.getTime() === target.getTime()    }    if (!(origin instanceof Object && target instanceof Object)) {      return false    }    if (origin.prototype !== target.prototype) {      return false    }    if (origin.constructor !== target.constructor) {      return false    }    for (p in target) {      if (!origin.hasOwnProperty(p)) {        return false      }    }    for (p in origin) {      if (!target.hasOwnProperty(p)) {        return false      }      if (typeof target[p] !== typeof origin[p]) {        return false      }      if (!ComUtil.compareDeep(origin[p], target[p])) {        return false      }    }    return true  }}

3.数值限制解决

export class FormatInputValue {  static intLen: number = 8  static decimalsLen: number = 2  /* 只允许输入整数 */  static parsetInt (v: string, intLen = FormatInputValue.intLen) {    return v.substr(0, intLen).replace(/[^\d]/g, '')  }  /* 只允许输入整数且支持可以保留负号 */  static parsetIntAndKeepMinus (v: string, intLen = FormatInputValue.intLen) {    v = v      .replace(/[^\d-]/g, '')      .replace(/-{1,}/g, '-')      .replace(/^-/, '$#$')      .replace(/-/g, '')      .replace('$#$', '-')    if (v.indexOf('-') > -1) intLen += 1    return v.substr(0, intLen)  }  /* 保留两位小数点,解决简单数字的转化,不解决表单数据格式化 */  static toFixedDecimal (v: string | number, decimalsLen = FormatInputValue.decimalsLen) {    if (!v) return '0.00'    return parseFloat(v + '').toFixed(decimalsLen)  }  /**   * 保留小数点,默认保留两位   * @param v 待解决字符串   * @param decimalsLen 小数点位数   * @param intLen 整数位数   */  static toFixed (v: string, decimalsLen = FormatInputValue.decimalsLen, intLen = FormatInputValue.intLen) {    v = v      .substr(0, intLen + decimalsLen + 1)      .replace(/[^\d.]/g, '')      .replace(/^\./, '')      .replace(/\.{2,}/g, '.')      .replace('.', '$#$')      .replace(/\./g, '')      .replace('$#$', '.')      .replace(new RegExp(`^(\\d+)\\.(\\d{0,${decimalsLen}}).*$`), '$1.$2')      .replace(/^\d+/, (match: string) => {        return (parseFloat(match) + '').substr(0, intLen)      })    return v  }  /* 保留小数点和负号,小数点默认保留两位 */  static toFixedAndKeepMinus (v: string, decimalsLen = FormatInputValue.decimalsLen, intLen = FormatInputValue.intLen) {    v = v      .replace(/[^\d.-]/g, '')      .replace(/^\./, '')      .replace(/\.{2,}/g, '.')      .replace('.', '$#$')      .replace(/\./g, '')      .replace('$#$', '.')      .replace(/-{1,}/g, '-')      .replace(/^-/, '$#$')      .replace(/-/g, '')      .replace('$#$', '-')      .replace(new RegExp(`^(-?\\d+)\\.(\\d{0,${decimalsLen}}).*$`), '$1.$2')    if (v.indexOf('-') > -1) intLen += 1    v = v      .replace(/^-?\d+/, (match: string) => match.substr(0, intLen))    return v.substr(0, intLen + decimalsLen + 1)  }  /**   * 千分位数字   * @param v 数字   * @param decimalsLen 保留的小数点   */  static formatMoney (v: string, decimalsLen = FormatInputValue.decimalsLen) {    if (!v) return v    v = parseFloat(v.replace(/[^\d.-]/g, '')).toFixed(decimalsLen)    const [int, decimal] = v.split('.')    const reverseInt = int.split('').reverse()    let t = ''    for (let i = 0, len = reverseInt.length; i < len; i++) {      t += reverseInt[i] + ((i + 1) % 3 === 0 && (i + 1) !== len ? ',' : '')    }    if (decimal) return t.split('').reverse().join('') + '.' + decimal    return t.split('').reverse().join('')  }  /**   * 转换限制   * @param reg 表达式   * @param val 转换值   * @param len 长度   */  static conversionOf (reg:any, val:string, len?:number):string {    val = val.replace(reg, '')    if (len) {      val = val.length > len ? val.substr(0, len) : val    }    return val  }  /**   * 去除空格   */  static removeEmpty = (val:any) => {    return val.replace(/(^\s*)|(\s*$)/g, '')  }}

4.解决url

export default class HttpUtil {  /* 将 url 查询参数解析成为对象 */  static parseUrl (url: string) {    const query = url.split('?')[1]    if (query) {      const queryList = query.split('&')      const obj: any = {}      queryList.forEach(item => {        const [key, value] = item.split('=')        obj[key] = decodeURIComponent(value)      })      return obj    }    return {}  }  /* 浏览器中打开新的 tab */  static openTab (url: string) {    const c = url[0]    if (/\/|#/.test(c)) {      if (c === '/') url = url.replace('/', '#')    } else {      if (!/[a-zA-Z]/.test(c) || url.split('#').length > 1) {        message.error('请输入正确的页面地址')        return      }    }    const win = window.open('about:blank')!    win.location.href = `${process.env.WEB_URL}${url}`  }}

5.判断浏览器内核

static getBrowserInfo (val:string):boolean {    let ua:any = navigator.userAgent.toLocaleLowerCase()    let browserType:string = ''    let browserVersion:string = ''    if (ua.match(/msie/) != null || ua.match(/trident/) != null) {      browserType = 'IE'      browserVersion = ua.match(/msie ([\d.]+)/) != null ? ua.match(/msie ([\d.]+)/)[1] : ua.match(/rv:([\d.]+)/)[1]    } else if (ua.match(/firefox/) != null) {      browserType = '火狐'    } else if (ua.match(/ubrowser/) != null) {      browserType = 'UC'    } else if (ua.match(/opera/) != null) {      browserType = '欧朋'    } else if (ua.match(/bidubrowser/) != null) {      browserType = '百度'    } else if (ua.match(/metasr/) != null) {      browserType = '搜狗'    } else if (ua.match(/tencenttraveler/) != null || ua.match(/qqbrowse/) != null) {      browserType = 'QQ'    } else if (ua.match(/maxthon/) != null) {      browserType = '遨游'    } else if (ua.match(/chrome/) != null) {      var is360 = SysUtil._mime('type', 'application/vnd.chromium.remoting-viewer')      browserType = is360 ? '360' : 'Chrome'    } else if (ua.match(/safari/) != null) {      browserType = 'Safari'    }    return val === browserType  }
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 部分工具类总结(懒人福利)

发表回复