【问题标题】:Javascript string to GuidJavascript 字符串到 Guid
【发布时间】:2014-08-05 04:19:25
【问题描述】:

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

【问题讨论】:

  • 我只是在寻找是否存在本机......我可以通过字符串操作来做到这一点......但我在想是否有干净的方式

标签: javascript string uuid guid


【解决方案1】:

最干净的方式?

最短的:

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!

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

【讨论】:

    【解决方案2】:

    我是在字符串操作中做到的

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

    【讨论】:

      【解决方案3】:

      你可以使用正则表达式:

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

      jsFiddle

      【讨论】:

        【解决方案4】:

        试试这个函数,它会返回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)
        }
        

        【讨论】:

          【解决方案5】:

          或者你会尝试-

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

          在哪里 你的新向导就像-

          var newGuid= guid();
          

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

          【讨论】:

          猜你喜欢
          • 2022-01-02
          • 2013-07-30
          • 2018-12-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-08-19
          • 1970-01-01
          相关资源
          最近更新 更多