在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);
答案 0 :(得分: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);
答案 1 :(得分:5)
最干净的方式?
最短:
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 :(得分:5)
您可以使用正则表达式:
var rxGetGuidGroups = /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/,
employeeId = shift.employee.id.replace(rxGetGuidGroups, '$1-$2-$3-$4-$5');
答案 3 :(得分: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)
}
答案 4 :(得分:-2)
或者你会尝试 -
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