Hola, tengo el siguiente problema:
Según un texto, tengo que cambiarlo de esta manera:
<upcase>text</upcase>
en mayúsculas.<lowcase>text</lowcase>
en minúsculas.<mixcase>text</mixcase>
, cambiar aleatoriamente entre mayúsculas y minúsculas.
Texto original:
We are <mixcase>living</mixcase> in a <upcase>yellow submarine</upcase>. We <mixcase>don't</mixcase> have <lowcase>anything</lowcase> else.
Resultado:
We are LiVinG in a YELLOW SUBMARINE. We dOn'T have.
Tengo que hacerlo como función.
¿Podrían darme ayuda para este código? No son muchas líneas.
Respuestas
En vez de pegarte aquí la solución a este problema, prefiero ayudarte a que seas tú mismo el que lo resuelvas. En mi opinión, la forma más sencilla de resolver este problema consiste en usar la función replace()
de JavaScript:
var texto = "Hola Mundo"; var resultado = texto.replace('Hola', 'Adiós'); // resultado = 'Adiós Mundo'
En este caso, como el texto a sustituir es variable, tendrás que usas expresiones regulares:
var texto = "Hola <upcase>Mundo</upcase>"; var resultado = texto.replace(/<upcase>Mundo<\/upcase>/g, 'MUNDO'); // resultado = 'Hola MUNDO'
Cuidado porque como lo que quieres reemplazar usa la barra invertida \
en la etiqueta de cierre, tendrás que escaparla: </upcase>
debe escribirse como <\/upcase>
dentro de la expresión regular. Por otra parte, la letra g
indica que el reemplazo debe hacerse tantas veces como aparezca, no solamente la primera vez.
Generalizando el ejemplo anterior, la siguiente expresión regular sirve para reemplazar cualquier texto:
var texto = "Hola <upcase>Mundo</upcase>"; var resultado = texto.replace(/<upcase>(.*)<\/upcase>/g, '$1'); // resultado = 'Hola MUNDO'
Y la última pieza que te faltaría para resolver este problema es la posibilidad de pasar una función como segundo argumento de la función replace()
. Esto lo necesitarás para el caso en el que tienes que mostrar el texto con mayúsculas y minúsculas aleatoriamente:
function convertirEnMayusculas(texto) { return texto.toUpperCase(); } var texto = "Hola <upcase>Mundo</upcase>"; var resultado = texto.replace(/<upcase>(.*)<\/upcase>/g, convertirEnMayusculas); // resultado = 'Hola MUNDO'
@javiereguiluz