Javascript string to Guid

24,705

Solution 1

I did it in string manipulation

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

I did it this way because I don't like inserting characters between strings. If there is any problem tell me.

Or you could use a for loop like 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);

Solution 2

Cleanest way?

Shortest:

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"

or if you don't care about the acceptable characters, it can be be even shorter (and cleaner):

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

Some don't like using regex for everything, but I liked it.

Solution 3

You could use an regular expression:

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

jsFiddle

Solution 4

Try this function, It will return string in GUID format

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)
}
Share:
24,705
Linc Abela
Author by

Linc Abela

Updated on November 10, 2020

Comments

  • Linc Abela
    Linc Abela over 3 years

    in javascript, what is the easiest way to convert this string

    798205486e954fa880a0b366e6725f71
    

    to GUID format like this

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

    this is the messy way I do it :) im looking for the cleanest way

    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);
    
    • Linc Abela
      Linc Abela almost 10 years
      I am just looking if any that exist natively... i can do it with string manipulation.. but I was thinking if theres clean way
  • Gunner
    Gunner over 7 years
    The question is how to parse an existing guid. Not how to generate a new guid.
  • NoRelect
    NoRelect about 5 years
    This solution does not always generate a valid guid as some bits of a guid have to be set to a specific value, see: en.wikipedia.org/wiki/Universally_unique_identifier#Format