From 29771ff04f25f0afdfbd4410bf2b9bb730c757b6 Mon Sep 17 00:00:00 2001 From: wkj <278599135@qq.com> Date: Mon, 21 Nov 2022 17:12:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E4=BA=86=20=E6=A8=A1=E7=89=88?= =?UTF-8?q?=E5=AD=97=E7=AC=A6=E4=B8=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/utils/string.d.ts | 20 ++++++++++++++ lib/utils/string.js | 61 ++++++++++++++++++++++++++++++++++++++++++- src/utils/string.ts | 52 +++++++++++++++++++++++++++++++++++- 3 files changed, 131 insertions(+), 2 deletions(-) diff --git a/lib/utils/string.d.ts b/lib/utils/string.d.ts index c75f310..3cd8a56 100644 --- a/lib/utils/string.d.ts +++ b/lib/utils/string.d.ts @@ -1,2 +1,22 @@ export declare function firstLetterLowerCase(s: string): string; export declare function firstLetterUpperCase(s: string): string; +/** + * 模板字符串 使用 定义const NotFilled = template`${0}未填写`; 调用NotFilled('姓名') 等于姓名未填写 + * @param strings + * @param keys + * @returns {function(...[*]): string} + */ +export declare const template: (strings: Array, ...keys: Array) => (...values: Array) => string; +/** + * 随机生成字符串 + * @param randomLength + * @returns + */ +export declare const random: (randomLength?: number) => string; +/** + * 随机生成带前缀的字符串 + * @param prefix 第一个参数为你想生成的固定的文字开头比如: 微信用户xxxxx + * @param randomLength 第二个为你想生成出固定开头文字外的随机长度 + * @returns + */ +export declare const randomName: (prefix?: string, randomLength?: number) => string; diff --git a/lib/utils/string.js b/lib/utils/string.js index 8e3b992..da02cb5 100644 --- a/lib/utils/string.js +++ b/lib/utils/string.js @@ -1,6 +1,6 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.firstLetterUpperCase = exports.firstLetterLowerCase = void 0; +exports.randomName = exports.random = exports.template = exports.firstLetterUpperCase = exports.firstLetterLowerCase = void 0; function firstLetterLowerCase(s) { return s.slice(0, 1).toLowerCase().concat(s.slice(1)); } @@ -9,3 +9,62 @@ function firstLetterUpperCase(s) { return s.slice(0, 1).toUpperCase().concat(s.slice(1)); } exports.firstLetterUpperCase = firstLetterUpperCase; +/** + * 模板字符串 使用 定义const NotFilled = template`${0}未填写`; 调用NotFilled('姓名') 等于姓名未填写 + * @param strings + * @param keys + * @returns {function(...[*]): string} + */ +var template = function (strings) { + var keys = []; + for (var _i = 1; _i < arguments.length; _i++) { + keys[_i - 1] = arguments[_i]; + } + return (function () { + var values = []; + for (var _i = 0; _i < arguments.length; _i++) { + values[_i] = arguments[_i]; + } + var dict = values[values.length - 1] || {}; + var result = [strings[0]]; + keys.forEach(function (key, i) { + var value = Number.isInteger(key) ? values[key] : dict[key]; + result.push(value, strings[i + 1]); + }); + return result.join(''); + }); +}; +exports.template = template; +/** + * 随机生成字符串 + * @param randomLength + * @returns + */ +var random = function (randomLength) { + if (randomLength === void 0) { randomLength = 16; } + // 默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1 + var DICT = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678'; + var maxPos = DICT.length; + var pwd = ''; + for (var i = 0; i < randomLength; i++) { + pwd += DICT.charAt(Math.floor(Math.random() * maxPos)); + } + return pwd; +}; +exports.random = random; +/** + * 随机生成带前缀的字符串 + * @param prefix 第一个参数为你想生成的固定的文字开头比如: 微信用户xxxxx + * @param randomLength 第二个为你想生成出固定开头文字外的随机长度 + * @returns + */ +var randomName = function (prefix, randomLength) { + if (randomLength === void 0) { randomLength = 8; } + // 默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1 + var DICT = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678'; + var maxPos = DICT.length; + var name = prefix === undefined ? '' : prefix; + name += (0, exports.random)(randomLength); + return name; +}; +exports.randomName = randomName; diff --git a/src/utils/string.ts b/src/utils/string.ts index 5d0019c..fa976ea 100644 --- a/src/utils/string.ts +++ b/src/utils/string.ts @@ -4,4 +4,54 @@ export function firstLetterLowerCase(s: string) { export function firstLetterUpperCase(s: string) { return s.slice(0, 1).toUpperCase().concat(s.slice(1)); -} \ No newline at end of file +} + +/** + * 模板字符串 使用 定义const NotFilled = template`${0}未填写`; 调用NotFilled('姓名') 等于姓名未填写 + * @param strings + * @param keys + * @returns {function(...[*]): string} + */ +export const template = (strings: Array, ...keys: Array): (...values: Array) => string => { + return (function (...values) { + const dict = values[values.length - 1] || {}; + const result = [strings[0]]; + keys.forEach((key, i) => { + const value = Number.isInteger(key) ? values[key] : dict[key]; + result.push(value, strings[i + 1]); + }); + return result.join(''); + }); +} + + +/** + * 随机生成字符串 + * @param randomLength + * @returns + */ +export const random = (randomLength: number = 16): string => { + // 默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1 + const DICT = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678'; + const maxPos = DICT.length; + let pwd = ''; + for (let i = 0; i < randomLength; i++) { + pwd += DICT.charAt(Math.floor(Math.random() * maxPos)); + } + return pwd; +}; + +/** + * 随机生成带前缀的字符串 + * @param prefix 第一个参数为你想生成的固定的文字开头比如: 微信用户xxxxx + * @param randomLength 第二个为你想生成出固定开头文字外的随机长度 + * @returns + */ +export const randomName = (prefix?: string, randomLength: number = 8): string => { + // 默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1 + const DICT = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678'; + const maxPos = DICT.length; + let name = prefix === undefined ? '' : prefix; + name += random(randomLength); + return name; +}; \ No newline at end of file