加了 模版字符串

This commit is contained in:
Wang Kejun 2022-11-21 17:12:49 +08:00
parent 85cfabf25a
commit 29771ff04f
3 changed files with 131 additions and 2 deletions

20
lib/utils/string.d.ts vendored
View File

@ -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<string>, ...keys: Array<any>) => (...values: Array<any>) => 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;

View File

@ -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;

View File

@ -5,3 +5,53 @@ export function firstLetterLowerCase(s: string) {
export function firstLetterUpperCase(s: string) {
return s.slice(0, 1).toUpperCase().concat(s.slice(1));
}
/**
* 使 const NotFilled = template`${0}未填写`; NotFilled('姓名')
* @param strings
* @param keys
* @returns {function(...[*]): string}
*/
export const template = (strings: Array<string>, ...keys: Array<any>): (...values: Array<any>) => 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;
};