如何在Node.js中将指定字符串转换为UUID v4?
如何将无分隔符的UUID字符串转换为标准UUID v4格式?
问题场景
输入字符串:
const input = '83e54feeeb444c7484b3c7a81b5ba2fd';
期望输出的UUID v4格式:
83e54fee-eb44-4c74-84b3-c7a81b5ba2fd
当前已实现的方案(多次调用插入函数):
function insertString(str, index, value) { return str.substr(0, index) + value + str.substr(index); } function converToUUID(_uuid){ _uuid = insertString(_uuid, 8, '-') _uuid = insertString(_uuid, 13, '-') _uuid = insertString(_uuid, 18, '-') _uuid = insertString(_uuid, 23, '-') return _uuid } console.log(converToUUID(input))
替代方案
方案1:正则表达式替换
通过正则分组匹配直接替换,一步完成格式转换:
function convertToUUID(uuid) { return uuid.replace(/^(.{8})(.{4})(.{4})(.{4})(.{12})$/, '$1-$2-$3-$4-$5'); } console.log(convertToUUID(input)); // 输出:83e54fee-eb44-4c74-84b3-c7a81b5ba2fd
正则将字符串按UUID的固定长度拆分为5个分组,再用分隔符连接各组。
方案2:字符串切片拼接
直接截取对应长度的子串,通过数组拼接成目标格式:
function convertToUUID(uuid) { return [ uuid.slice(0, 8), uuid.slice(8, 12), uuid.slice(12, 16), uuid.slice(16, 20), uuid.slice(20) ].join('-'); } console.log(convertToUUID(input)); // 输出:83e54fee-eb44-4c74-84b3-c7a81b5ba2fd
用slice截取各段后,通过数组的join方法一键添加分隔符。
方案3:模板字符串拼接
直接用模板字符串组合各截取片段,写法更简洁:
function convertToUUID(uuid) { return `${uuid.slice(0,8)}-${uuid.slice(8,12)}-${uuid.slice(12,16)}-${uuid.slice(16,20)}-${uuid.slice(20)}`; } console.log(convertToUUID(input)); // 输出:83e54fee-eb44-4c74-84b3-c7a81b5ba2fd
无需数组中转,直接通过模板字符串的语法拼接各部分。
内容的提问来源于stack exchange,提问作者retr0327
相关产品推荐
相关产品推荐

