@3r/tool
Version:
🏃包含一些常用方法例如对象深克隆、递归调用、一一对比/数组交集、并集、差集/二维向量点乘、叉乘/股票KDJ、MACD、RSI、BOLL/验证为空、车牌号、邮箱、身份证、统一社会信用代码、手机号、版本对比/转换日期、星座、身份证解析、字节/随机颜色、手机号、身份证号码、统一社会信用代码...持续更新整合
210 lines (205 loc) • 12.8 kB
JavaScript
import { Convertor, executionTime } from "../index.js";
let description = function () {
return ["#### Convertor 转换模块", "包含一些转换的方法.", "", "以下是相关示例:"];
};
let run = function () {
console.log("社会统一信用代码转换组织机构代码", Convertor.usciToOibc("91411100766237140X"));
console.log("日期转换", Convertor.timeFormat(new Date(), "yyyy年MM月dd日 hh:mm:ss"));
console.log("千分位处理", Convertor.thousands(10009992.12));
console.log("文本转base64", Convertor.textToBase64("1234"));
console.log("base64转文本", Convertor.base64ToText("MTIzNA=="));
console.log("json对象转换base64", Convertor.jsonToBase64({ a: 1 }));
console.log("base64转换json对象", Convertor.base64ToJson("eyJhIjoxfQ=="));
console.log("颜色转换", Convertor.hexToRgb("f2a"));
console.log("颜色转换", Convertor.rgbToHex("rgb(235,239,241)"));
console.log("xml输出文本", Convertor.xmlToText("<div>总金额 <span>100,000.00</span></div>"));
console.log("数字转大写人民币", Convertor.numToAmountInWords(102030.0));
console.log("数字转中文", Convertor.numToChinese(102030));
console.log("url query 转对象", Convertor.urlQueryToObject("http://example.com/user?id=1&age=2"));
console.log("url object 转 query", Convertor.urlObjectToQuery({ id: 1, age: 3 }));
console.log("蛇形命名法 -> 大驼峰命名法", Convertor.snakeCaseToUpperCamelcase("lower_case_with_underscores"));
console.log("蛇形命名法 -> 小驼峰命名法", Convertor.snakeCaseToLowerCamelcase("lower_case_with_underscores"));
console.log("驼峰命名法 -> 蛇形命名法", Convertor.camelcaseToSnakeCase("LowerCaseWithUnderscores"));
console.log("通过日期获取星座", Convertor.getConstellationByDate("09/14"));
console.log("身份证号解析", "230504199607116664".citizenIdentificationNumberParse);
console.log("字节转换", Convertor.byteFormat(1099511627776, 2));
console.log("四值法拆分", Convertor.fourValueSplit(1));
console.log("敏感信息加符号", Convertor.sensitivePlusSymbol("230504199607116664", "6,14"));
console.log("将字符串中的全角转换为半角", Convertor.toHalfWidthChar("【你好呀】"));
console.log("将字符串中的半角转换为全角", Convertor.toFullWidthChar("[哈哈哈哈]"));
};
try {
describe("转换模块", function () {
it("社会统一信用代码转换组织机构代码", function () {
expect(Convertor.usciToOibc("91411100766237140X")).toEqual("76623714-0");
expect("91411100766237140X".usciToOibc).toEqual("76623714-0");
expect(Convertor.usciToOibc("91411100766237140")).toEqual("");
});
it("日期转换", function () {
expect(Convertor.timeFormat(new Date(), "yyyy年MM月dd日 hh:mm:ss").startsWith(new Date().getFullYear().toString())).toEqual(true);
expect(Convertor.timeFormat(new Date(), "yy年M月d日 h:m:s") == "").toEqual(false);
expect(Convertor.timeFormat(new Date(), "qq S") == "").toEqual(false);
expect(Convertor.timeFormat(new Date()) == "").toEqual(false);
expect(new Date().timeFormat() == "").toEqual(false);
expect(new Date().timeFormat("yy年M月d日 h:m:s") == "").toEqual(false);
});
it("千分位处理", function () {
let num = 10009992.12;
expect(Convertor.thousands(10009992.12)).toEqual("10,009,992.12");
expect(Convertor.thousands(1)).toEqual("1");
expect("10009992.12".thousands).toEqual("10,009,992.12");
expect(num.thousands).toEqual("10,009,992.12");
});
it("文本转base64", function () {
expect(Convertor.textToBase64("1234")).toEqual("MTIzNA==");
expect(Convertor.textToBase64("À")).toEqual("w4A=");
expect(Convertor.textToBase64("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890你好呀+-*/&@!$#")).toEqual("QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejEyMzQ1Njc4OTDkvaDlpb3lkYArLSovJkAhJCM=");
expect(Convertor.textToBase64("︻︼︽︾〒↑↓☉⊙●〇◎¤★☆■▓「」『』◆◇▲△▼▽◣◥◢◣◤ ◥№↑↓→←↘↙Ψ※㊣∑⌒∩【】〖〗@ξζω□∮〓※》∏卐√ ╳々♀♂∞①ㄨ≡╬╭╮╰╯╱╲ ▂ ▂ ▃ ▄ ▅ ▆ ▇ █ ▂▃▅▆█")).toEqual("77i777i877i977i+44CS4oaR4oaT4piJ4oqZ4peP44CH4peOwqTimIXimIbilqDilpPjgIzjgI3jgI7jgI/il4bil4filrLilrPilrzilr3il6Pil6Xil6Lil6Pil6Qg4pel4oSW4oaR4oaT4oaS4oaQ4oaY4oaZzqjigLvjiqPiiJHijJLiiKnjgJDjgJHjgJbjgJfvvKDOvs62z4nilqHiiK7jgJPigLvjgIviiI/ljZDiiJog4pWz44CF4pmA4pmC4oie4pGg44So4omh4pWs4pWt4pWu4pWw4pWv4pWx4pWyIOKWgiDiloIg4paDIOKWhCDiloUg4paGIOKWhyDilogg4paC4paD4paF4paG4paI");
});
it("base64转文本", function () {
expect(Convertor.base64ToText("MTIzNA==")).toEqual("1234");
expect(Convertor.base64ToText("w4A=")).toEqual("À");
expect(Convertor.base64ToText("QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejEyMzQ1Njc4OTDkvaDlpb3lkYArLSovJkAhJCM=")).toEqual("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890你好呀+-*/&@!$#");
});
it("json对象转换base64", function () {
expect(Convertor.jsonToBase64({ a: 1 })).toEqual("eyJhIjoxfQ==");
});
it("base64转换json对象", function () {
expect(Convertor.base64ToJson("eyJhIjoxfQ==").a == 1).toEqual(true);
});
it("颜色转换", function () {
expect(Convertor.hexToRgb("f2a")).toEqual("rgb(255,34,170)");
expect(Convertor.hexToRgb("#f2a")).toEqual("rgb(255,34,170)");
expect(Convertor.hexToRgb("#ff22aa")).toEqual("rgb(255,34,170)");
expect(Convertor.hexToRgb("ff22aa")).toEqual("rgb(255,34,170)");
expect("ff22aa".hexToRgb).toEqual("rgb(255,34,170)");
expect("EBEFF1".hexToRgb).toEqual("rgb(235,239,241)");
expect(() => Convertor.hexToRgb("")).toThrow();
});
it("颜色转换", function () {
expect(Convertor.rgbToHex("rgb(255,34,170)")).toEqual("#ff22aa");
expect(Convertor.rgbToHex("rgb(1,34,170)")).toEqual("#0122aa");
expect("rgb(255,34,170)".rgbToHex).toEqual("#ff22aa");
expect(Convertor.rgbToHex([255, 34, 170])).toEqual("#ff22aa");
expect(() => Convertor.rgbToHex("")).toThrow();
expect(() => Convertor.rgbToHex([])).toThrow();
});
it("xml输出文本", function () {
expect(Convertor.xmlToText("<div>总金额 <span>100,000.00</span></div>")).toEqual("总金额 100,000.00");
expect("<div>总金额 <span>100,000.00</span></div>".xmlToText).toEqual("总金额 100,000.00");
});
it("数字转大写人民币", function () {
expect(Convertor.numToAmountInWords(102030.0)).toEqual("壹拾万贰仟零叁拾圆整");
expect("102030".numToAmountInWords).toEqual("壹拾万贰仟零叁拾圆整");
expect(Convertor.numToAmountInWords(-102030.0)).toEqual("欠壹拾万贰仟零叁拾圆整");
expect(Convertor.numToAmountInWords(undefined)).toEqual("");
});
it("数字转中文", function () {
expect(Convertor.numToChinese(102030)).toEqual("十万二千三十");
expect("102030".numToChinese).toEqual("十万二千三十");
expect(Convertor.numToChinese(undefined)).toEqual("");
});
it("url query 转对象", function () {
expect(Convertor.urlQueryToObject("http://example.com/user?id=1&age=2")).toEqual({ age: "2", id: "1" });
expect("http://example.com/user?id=1&age=2".urlQueryToObject).toEqual({ age: "2", id: "1" });
expect(Convertor.urlQueryToObject("")).toEqual({});
});
it("url object 转 query", function () {
expect(Convertor.urlObjectToQuery({ id: 1, age: 3 })).toEqual("?id=1&age=3");
});
it("蛇形命名法 -> 大驼峰命名法", function () {
expect(Convertor.snakeCaseToUpperCamelcase("lower_case_with_underscores")).toEqual("LowerCaseWithUnderscores");
expect("lower_case_with_underscores".snakeCaseToUpperCamelcase).toEqual("LowerCaseWithUnderscores");
});
it("蛇形命名法 -> 小驼峰命名法", function () {
expect(Convertor.snakeCaseToLowerCamelcase("lower_case_with_underscores")).toEqual("lowerCaseWithUnderscores");
expect("lower_case_with_underscores".snakeCaseToLowerCamelcase).toEqual("lowerCaseWithUnderscores");
});
it("驼峰命名法 -> 蛇形命名法", function () {
expect(Convertor.camelcaseToSnakeCase("LowerCaseWithUnderscores")).toEqual("lower_case_with_underscores");
expect("LowerCaseWithUnderscores".camelcaseToSnakeCase).toEqual("lower_case_with_underscores");
});
it("通过日期获取星座", function () {
expect(Convertor.getConstellationByDate("01/01")).toEqual("摩羯座");
expect(Convertor.getConstellationByDate("02/02")).toEqual("水瓶座");
expect(Convertor.getConstellationByDate("03/01")).toEqual("双鱼座");
expect(Convertor.getConstellationByDate("04/01")).toEqual("白羊座");
expect(Convertor.getConstellationByDate("05/01")).toEqual("金牛座");
expect(Convertor.getConstellationByDate("06/01")).toEqual("双子座");
expect(Convertor.getConstellationByDate("07/01")).toEqual("巨蟹座");
expect(Convertor.getConstellationByDate("08/01")).toEqual("狮子座");
expect(Convertor.getConstellationByDate("09/01")).toEqual("处女座");
expect(Convertor.getConstellationByDate("10/01")).toEqual("天秤座");
expect(Convertor.getConstellationByDate("11/01")).toEqual("天蝎座");
expect(Convertor.getConstellationByDate("12/01")).toEqual("射手座");
expect(Convertor.getConstellationByDate("12/24")).toEqual("摩羯座");
expect("12/24".getConstellationByDate).toEqual("摩羯座");
expect(Convertor.getConstellationByDate(new Date(2000, 11, 24))).toEqual("摩羯座");
expect(new Date(2000, 11, 24).getConstellationByDate).toEqual("摩羯座");
expect(Convertor.getConstellationByDate(1224)).toEqual("摩羯座");
});
it("身份证号解析", function () {
expect(Convertor.citizenIdentificationNumberParse("230504199607116664")).toEqual({
reginCode: "230504",
birthday: "1996/07/11",
gender: "女",
constellation: "巨蟹座",
age: new Date().getFullYear() - 1996,
});
expect("230504199607116664".citizenIdentificationNumberParse).toEqual({
reginCode: "230504",
birthday: "1996/07/11",
gender: "女",
constellation: "巨蟹座",
age: new Date().getFullYear() - 1996,
});
expect("420503198804097532".citizenIdentificationNumberParse).toEqual({
age: new Date().getFullYear() - 1988,
birthday: "1988/04/09",
constellation: "白羊座",
gender: "男",
reginCode: "420503",
});
});
it("字节转换", function () {
let byte = 12345;
expect(Convertor.byteFormat(830, 2)).toEqual("830B");
expect(Convertor.byteFormat(1024, 2)).toEqual("1.00KB");
expect(Convertor.byteFormat(1024)).toEqual("1.00KB");
expect(Convertor.byteFormat(1048576, 2)).toEqual("1.00MB");
expect(Convertor.byteFormat(1073741824, 2)).toEqual("1.00GB");
expect(Convertor.byteFormat(1099511627776, 2)).toEqual("1.00TB");
expect(Convertor.byteFormat(1125899906842624, 2)).toEqual("1.00PB");
expect(byte.byteFormat(2)).toEqual("12.06KB");
expect(Convertor.byteFormat("1024", 2)).toEqual("1.00KB");
});
it("四值法拆分", function () {
expect(Convertor.fourValueSplit(1)).toEqual([1, 1, 1, 1]);
expect(Convertor.fourValueSplit([1])).toEqual([1, 1, 1, 1]);
expect(Convertor.fourValueSplit([1, 2])).toEqual([1, 2, 1, 2]);
expect(Convertor.fourValueSplit([1, 2, 3])).toEqual([1, 2, 3, 2]);
expect(Convertor.fourValueSplit([1, 2, 3, 4])).toEqual([1, 2, 3, 4]);
expect(() => Convertor.fourValueSplit([1, 2, 3, 4, 5])).toThrow();
});
it("敏感信息加符号", function () {
expect(Convertor.sensitivePlusSymbol("230504199607116664", "6,14")).toEqual("230504********6664");
expect(Convertor.sensitivePlusSymbol("18602736144", [3, 7])).toEqual("186****6144");
expect(
Convertor.sensitivePlusSymbol("18602736144", [
[3, 7],
[8, 11],
])
).toEqual("186****6***");
expect(Convertor.sensitivePlusSymbol("18602736144", [[3, 7, 3]])).toEqual("18602736144");
});
it("将字符串中的全角转换为半角", function () {
expect(Convertor.toHalfWidthChar("【你好呀】")).toEqual("[你好呀]");
});
it("将字符串中的半角转换为全角", function () {
expect(Convertor.toFullWidthChar("[哈哈哈哈]")).toEqual("【哈哈哈哈】");
});
});
} catch (error) {
// describe is not defined 无需理会 调用方式不一致
}
export { run, description };