Tengo una cadena, que siempre tiene una longitud de 32:
var str = "34v188d9cefa401f988563fb153xy04b";
Ahora necesito agregar un signo menos (-) después del siguiente número de caracteres:
La salida debe ser:
34v188d9-cefa-401f-9885-63fb153xy04b
Hasta ahora he intentado diferentes cálculos con, por ejemplo:
str.split('').reduce((a, b, c) => a + b + (c % 6 === 4 ? '-' : ''), '');
Pero no obtengo el resultado esperado.
Podrías usar un reemplazo de expresiones regulares:
var str = "34v188d9cefa401f988563fb153xy04b"; var output = str.replace(/^(.{8})(.{4})(.{4})(.{4})(.{12})$/, "$1-$2-$3-$4-$5"); console.log(output);Si quieres usar reduce puedes hacer algo como esto
var str = "34v188d9cefa401f988563fb153xy04b"; const result = str.split('').reduce((res, c, i) => { const hiphensPositions = [7, 11, 15, 19] return res + c + (hiphensPositions.includes(i)?'-':'') }, '') console.log(result) var str = "34v188d9cefa401f988563fb153xy04b"; var a="" for (let i in str){if (i == 7 || i==11 || i==15 || i == 19){a = a+str[i]+"-"} else{a+=str[i] }}Deberías hacerlo.