stringUtil.ts
1.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/**
* UUID生成
*
* @param len 长度数值
* @param radix 基数,如:2/10/16
*/
export const uuidGen = (len?: number, radix?: number) => {
const chars: string[] =
'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
const uuid: string[] = [];
let i: number;
const radixNew = radix || chars.length;
if (len) {
// Compact form
for (i = 0; i < len; i++) uuid[i] = chars[0 | (Math.random() * radixNew)];
} else {
// rfc4122, version 4 form
let r;
// rfc4122 requires these characters
uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
uuid[14] = '4';
// Fill in random data. At i==19 set the high bits of clock sequence as
// per rfc4122, sec. 4.1.5
for (i = 0; i < 36; i++) {
if (!uuid[i]) {
r = 0 | (Math.random() * 16);
uuid[i] = chars[i === 19 ? (r & 0x3) | 0x8 : r];
}
}
}
return uuid.join('');
};
/**
* 唯一ID生成(小写,无'-'字符)
*
* @param prefix
* @param len
* @param radix
*/
export const uidGen = (prefix?: string, len?: number, radix?: number) => {
return (prefix || '') + uuidGen(len, radix).replaceAll('-', '').toLowerCase();
};