首页 > 其他 > 详细

tools公共方法

时间:2021-04-12 12:28:56      阅读:21      评论:0      收藏:0      [点我收藏+]
export const getQueryString = (name: any) => {
    let url = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
    let newUrl = window.location.search.substr(1).match(url);
    if (newUrl != null) {
        return unescape(newUrl[2]);
    } else {
        return false;
    }
};
/**
 * 判断字符是否为空
 * @param value
 * @returns {boolean}
 */
export const isEmpty = (value: any) => {
    if (
        value === undefined ||
        value === null ||
        value === "" ||
        value === "null"
    ) {
        return true;
    }
    return false;
};

/**
 * 判断字符是否不为空
 * @param value
 * @returns {boolean}
 */
export const isNotEmpty = (value: any) => {
    return !isEmpty(value);
};

// 判断是否为微信内置浏览器
export const isWeiXin = () => {
    try {
        let ua = window.navigator.userAgent.toLowerCase();
        return ua.indexOf("micromessenger") !== -1;
    } catch (e) {
        return false;
    }
};

/**
 * 时间格式化
 * @returns {string|*}
 * @param value
 * @param formatVal
 */
export function dateFormat(
    value: string | number | Date | null | undefined,
    formatVal: string
) {
    if (value === undefined || value === null || value === "") {
        return "";
    }
    let dt;
    if (value instanceof Date) {
        dt = value;
    } else {
        dt = new Date(value);
    }

    return formatDate(dt, formatVal);
}
export function datetimeString2DateString(datetimeString: {
    replace: (arg0: RegExp, arg1: string) => string | number | Date;
}) {
    let d = new Date(datetimeString.replace(/\s/, "T"));
    return dateFormat(d, "yyyy-MM-dd");
}

export function formatDate(date: Date, fmt: string) {
    if (/(y+)/.test(fmt)) {
        fmt = fmt.replace(
            RegExp.$1,
            (date.getFullYear() + "").substr(4 - RegExp.$1.length)
        );
    }
    let o = {
        "M+": date.getMonth() + 1,
        "d+": date.getDate(),
        "h+": date.getHours(),
        "m+": date.getMinutes(),
        "s+": date.getSeconds()
    };
    for (let k in o) {
        if (new RegExp(`(${k})`).test(fmt)) {
            // @ts-ignore
            let str = o[k] + "";
            fmt = fmt.replace(
                RegExp.$1,
                RegExp.$1.length === 1 ? str : padLeftZero(str)
            );
        }
    }
    return fmt;
}
function padLeftZero(str: string) {
    return ("00" + str).substr(str.length);
}

export function courseLabelChange(type: string) {
    let courseLabelName = type;
    switch (courseLabelName) {
        case "FREE":
            courseLabelName = "免费";
            break;
        case "PRIMARY":
            courseLabelName = "初级课程";
            break;
        case "JUNIOR":
            courseLabelName = "中级课程";
            break;
        case "SENIOR":
            courseLabelName = "高级课程";
            break;
        case "OPEN":
            courseLabelName = "公开课";
            break;
    }
    return courseLabelName;
}

/**
 * 合并对象
 * @param obj
 * @param options
 * @returns {*}
 */
export const merge = (obj, options) => {
    if (obj && options) {
        for (let p in options) {
            if (typeof obj[p] === "object" && typeof options[p] === "object") {
                merge(obj[p], options[p]);
            } else {
                obj[p] = options[p];
            }
        }
    }
    return obj;
};

/**
 * @param {String|Number} value 要验证的字符串或数值
 * @param {*} validList 用来验证的列表
 */
export function oneOf(value, validList) {
    for (let i = 0; i < validList.length; i++) {
        if (value === validList[i]) {
            return true;
        }
    }
    return false;
}

/**
 * @description 绑定事件 on(element, event, handler)
 */
export const on = (function() {
    try {
        if (document.addEventListener) {
            return function(element, event, handler) {
                if (element && event && handler) {
                    element.addEventListener(event, handler, false);
                }
            };
        } else {
            return function(element, event, handler) {
                if (element && event && handler) {
                    element.attachEvent("on" + event, handler);
                }
            };
        }
    } catch (e) {
        return false;
    }
})();

/**
 * @description 解绑事件 off(element, event, handler)
 */
export const off = (function() {
    try {
        if (document.removeEventListener) {
            return function(element, event, handler) {
                if (element && event) {
                    element.removeEventListener(event, handler, false);
                }
            };
        } else {
            return function(element, event, handler) {
                if (element && event) {
                    element.detachEvent("on" + event, handler);
                }
            };
        }
    } catch (e) {
        return false;
    }
})();

/**
 * 如果返回值浮点型,保留几位小数
 * @returns {number|*}
 */
export function floatFormat(value, deci) {
    if (!deci) deci = 2;
    return parseFloat(value.toFixed(deci));
}

/**
 * 购买金额精度处理
 * @param num1
 * @param num2
 * @param p:精度
 */
export function multi(num1, num2, p) {
    let scale = Math.pow(10, p);
    return (num1 * scale * (num2 * scale)) / (scale * scale);
}

/**
 * 校验手机号
 * @param phoneNum
 */
export function isLegalPhoneNumber(phoneNum: any) {
    const reg = /^\d{7,11}$/;
    return reg.test(phoneNum);
}

/**
 * 校验邮箱
 * @param email
 */
export function isLegalEmail(email: any) {
    const reg = /^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/;
    return reg.test(email);
}

/**
 * 校验表情
 */
export function isExpression(expression: any) {
    const reg = /[^\u0020-\u007E\u00A0-\u00BE\u2E80-\uA4CF\uF900-\uFAFF\uFE30-\uFE4F\uFF00-\uFFEF\u0080-\u009F\u2000-\u201f\u2026\u2022\u20ac\r\n]/g;
    return reg.test(expression);
}

/**
 * 按空格截取字符串,获取第一个空格之前
 * @returns {string|*}
 */
export function spliceStringPre(val) {
    return val.trim().split(" ")[0];
}

/**
 * 将数字转换为汉字,十万以内
 * @param section
 * @returns {string}
 * @constructor
 */
export function sectionToChinese(section) {
    let chnNumChar = [
        "零",
        "一",
        "二",
        "三",
        "四",
        "五",
        "六",
        "七",
        "八",
        "九"
    ];
    let chnUnitChar = ["", "十", "百", "千", "万", "亿", "万亿", "亿亿"];
    let strIns = "",
        chnStr = "";
    let unitPos = 0;
    let zero = true;
    while (section > 0) {
        let v = section % 10;
        if (v === 0) {
            if (!zero) {
                zero = true;
                chnStr = chnNumChar[v] + chnStr;
            }
        } else {
            zero = false;
            strIns = chnNumChar[v];
            strIns += chnUnitChar[unitPos];
            chnStr = strIns + chnStr;
        }
        unitPos++;
        section = Math.floor(section / 10);
    }
    return chnStr;
}

// base64 编码和解码方法
export const Base64 = {
    encode(str) {
        return btoa(
            encodeURIComponent(str).replace(
                /%([0-9A-F]{2})/g,
                function toSolidBytes(match, p1) {
                    //@ts-ignore
                    return String.fromCharCode("0x" + p1);
                }
            )
        );
    },
    decode(str) {
        return decodeURIComponent(
            atob(str)
                .split("")
                .map(function(c) {
                    return (
                        "%" + ("00" + c.charCodeAt(0).toString(16)).slice(-2)
                    );
                })
                .join("")
        );
    }
};
/*
 * 设备检验
 */
export function _isMobile() {
    return navigator.userAgent.match(
        /(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i
    );
}

/**
 * @description 数字转化称对应的字母,1->A
 */
export function numToChapter(value: number) {
    return String.fromCharCode(value + 64);
}

/**
 *
 */
export function generateVisitorId() {
    function randomNum(Min, Max) {
        var Range = Max - Min;
        var Rand = Math.random();
        return Min + Math.round(Rand * Range);
    }
    return new Date().getTime() + "-" + randomNum(100000, 999999);
}

tools公共方法

原文:https://www.cnblogs.com/ZhLeiii/p/14646933.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!