Строка Javascript для Guid

в 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);

5 ответов


Я сделал это в строку манипуляции

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 петля, как bellow

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

вы можете использовать регулярное выражение:

var rxGetGuidGroups = /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/,
    employeeId = shift.employee.id.replace(rxGetGuidGroups, '----');

jsFiddle


самый чистый путь?

минимальные:

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

или если вы не заботитесь о допустимых символов, оно может быть еще короче (и чище):

txt.replace(/(.{8})(.{4})(.{4})(.{4})(.{12})/,"----");  //boom!

некоторым не нравится использовать regex для всего, но мне это понравилось.


попробуйте эту функцию, она вернет строку в формате 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)
}

или вы попытаетесь-

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