工作中碰上需要检测ipv6地址是否重复的需求,但是输入的ipv6地址有的简写,有的全写,因此,需要把简写的ipv6地址转换成全写的ipv6地址。
function tranSimIpv6ToFullIpv6(simpeIpv6){
simpeIpv6 = simpeIpv6.toUpperCase()
if(simpeIpv6 == "::"){
return "0000:0000:0000:0000:0000:0000:0000:0000";
}
let arr = ["0000", "0000", "0000", "0000", "0000", "0000", "0000", "0000"]
if(simpeIpv6.startsWith("::")){
let tmpArr = simpeIpv6.substring(2).split(":")
for(let i=0;i<tmpArr.length;i++){
arr[i+8-tmpArr.length] = ('0000'+tmpArr[i]).slice(-4)
}
}else if(simpeIpv6.endsWith("::")){
let tmpArr = simpeIpv6.substring(0, simpeIpv6.length - 2).split(":");
for(let i=0;i<tmpArr.length;i++){
arr[i] = ('0000'+tmpArr[i]).slice(-4)
}
}else if(simpeIpv6.indexOf("::")>=0){
let tmpArr = simpeIpv6.split("::");
let tmpArr0 = tmpArr[0].split(":");
for(let i=0;i<tmpArr0.length;i++){
arr[i] = ('0000'+tmpArr0[i]).slice(-4)
}
let tmpArr1 = tmpArr[1].split(":");
for(let i=0;i<tmpArr1.length;i++){
arr[i+8-tmpArr1.length] = ('0000'+tmpArr1[i]).slice(-4)
}
}else{
let tmpArr = simpeIpv6.split(":");
for(let i=0;i<tmpArr.length;i++){
arr[i+8-tmpArr.length] = ('0000'+tmpArr[i]).slice(-4)
}
}
return arr.join(":")
}