JavaScript字符串转换为GUID。

10

在JavaScript中,将此字符串转换为最简单的方法是什么?

798205486e954fa880a0b366e6725f71

转换为像这样的GUID格式

79820548-6e95-4fa8-80a0-b366e6725f71

这是我目前的笨方法🙈,我正在寻找更简洁的方式💡

var employeeId = shift.employee.id.substring(0, 8) + "-" + shift.employee.id.substring(8, 12)
                    + "-" + shift.employee.id.substring(12, 16) + "-" + shift.employee.id.substring(16, 20) + "-" + shift.employee.id.substring(20, 32);

2
我只是在看是否有本地存在的方法...我可以通过字符串操作来完成它...但我在想是否有更简洁的方法。 - Linc Abela
5个回答

12

最干净的方式是什么?

最短的:

var txt = shift.employee.id;
txt.replace(/([0-z]{8})([0-z]{4})([0-z]{4})([0-z]{4})([0-z]{12})/,"$1-$2-$3-$4-$5");
//"79820548-6e95-4fa8-80a0-b366e6725f71"

或者如果你不在意可接受的字符,它可以更短(也更清晰):

txt.replace(/(.{8})(.{4})(.{4})(.{4})(.{12})/,"$1-$2-$3-$4-$5");  //boom!

有些人不喜欢在所有情况下都使用正则表达式,但我喜欢它。


8

我在字符串操作中完成了它

var str = "798205486e954fa880a0b366e6725f71";
var parts = [];
parts.push(str.slice(0,8));
parts.push(str.slice(8,12));
parts.push(str.slice(12,16));
parts.push(str.slice(16,20));
parts.push(str.slice(20,32));
var GUID = parts.join('-'); 

console.log(GUID) // prints expected GUID

我选择这种方式是因为我不喜欢在字符串之间插入字符。如果有任何问题,请告诉我。

或者你可以像下面这样使用for循环:

var str = "798205486e954fa880a0b366e6725f71";
var lengths = [8,4,4,4,12];
var parts = [];
var range = 0; 
for (var i = 0; i < lengths.length; i++) {
    parts.push(str.slice(range,range+lengths[i]));
    range += lengths[i];
};
var GUID = parts.join('-');
console.log(GUID);

6
您可以使用正则表达式:
var rxGetGuidGroups = /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/,
    employeeId = shift.employee.id.replace(rxGetGuidGroups, '$1-$2-$3-$4-$5');

jsFiddle


3

尝试使用此函数,它将以GUID格式返回字符串。

function getGuid(str){
return str.slice(0,8)+"-"+str.slice(8,12)+"-"+str.slice(12,16)+
"-"+str.slice(16,20)+"-"+str.slice(20,str.length+1)
}

-3

或者你可以尝试-

var guid = (function () {
    function s4() {
        return Math.floor((1 + Math.random()) * 0x10000)
               .toString(16)
               .substring(1);
    }
    return function () {
        return s4() + s4() + '-' + s4() + '-' + s4() + '-' +
           s4() + '-' + s4() + s4() + s4();
    };
})();

哪里 你的新guid就像-

var newGuid= guid();

newGuid 返回- 7d4b3ef0-b5bb-5c42-2a02-80a4371babf8


问题是如何解析现有的 GUID,而不是如何生成新的 GUID。 - Gunner
这个解决方案并不总是生成一个有效的 guid,因为一些 guid 的位必须设置为特定的值,详见:https://en.wikipedia.org/wiki/Universally_unique_identifier#Format - NoRelect

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接