部分工具类总结(懒人福利)
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解压,如遇到无法解压的请联系管理员
开心源码网 » 部分工具类总结(懒人福利)
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 部分工具类总结(懒人福利)