tengo la siguiente cadena
https://picsum.photos/id/1025/4951/3301
Necesito reemplazar aquí los dos últimos números 4951 y 3301 con 200 así que al final tendré https://picsum.photos/id/1025/200/200
¿Cómo puedo hacer esto automáticamente?
lo que probé
traté de dividirlos por '/'
const splittedUrl = image.download_url.split('/'); splittedUrl[splittedUrl.length - 1] = '200'; splittedUrl[splittedUrl.length - 2] = '200'; pero no es posible porque tengo // después de https
así que cuando me uno, obtengo un resultado incorrecto al final
console.log(splittedUrl.join(' '));Lo está haciendo todo bien, simplemente únase a la cadena con la cadena vacía, únase con /
const stringVal = 'https://picsum.photos/id/1025/4951/3301'; const stringSplited = stringVal.split('/'); stringSplited[stringSplited.length - 1] = '200'; stringSplited[stringSplited.length - 2] = '200'; const stringJoined = stringSplited.join('/') //this will log the following: https://picsum.photos/id/1025/200/200 console.log(stringJoined)Un reemplazo de expresión regular está diseñado para este tipo de trabajo. Uno simple que coincide con un / seguido de algunos dígitos, seguido de otro / , algunos dígitos más, y el final de la cadena es /\/\d+\/\d+$/ . Podemos escribirlo así:
const replaceLastTwos = (s1, s2) => (s) => s .replace (/\/\d+\/\d+$/, `/${s1}/${s2}`) const replaceLastTwoWith200s = replaceLastTwo (200, 200) console .log (replaceLastTwoWith200 ('https://picsum.photos/id/1025/4951/3301')) Por supuesto, si esos 200 s son realmente fijos, puede simplificar esto a:
const replaceLastTwoWith200s = (s) => s .replace (/\/\d+\/\d+$/, `/200/200`)