es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Desplazar caracteres alfabéticos en una cadena

Digamos que tengo una cadena:
s <- ‘hello world zzz’
Quiero desplazar los caracteres alfabéticos hacia arriba en uno.

Entonces:
a se convierte en b
b se convierte en c
c se convierte en d
d se convierte en e
y así sucesivamente…
w se convierte en x
x se convierte en y
y se convierte en z

Y:
z se convierte en a

La otra condición es que si hay un carácter que no está en el alfabeto (en este caso el espacio), mantener los caracteres como están, por lo que el espacio sigue siendo un espacio.

¿Sería esto posible?

Mi resultado deseado aquí sería:
ifmmp xpsme aaa

He intentado:
new <- c()
for (i in s)
{
new <- c(new, ‘abcdefghijklmnopqrstuvwxyz'[which(‘abcdefghijklmnopqrstuvwxyz’ == i) + 1])
}

print(new)

Pero no funciona… No muestra nada.

¿Hay alguna forma de hacer esto?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible desplazar los caracteres alfabéticos hacia arriba en uno, manteniendo los caracteres no alfabéticos sin cambios.

    Aquí hay una forma de lograr esto utilizando la función chartr() en R:

    s <- 'hello world zzz'
    shifted <- chartr('abcdefghijklmnopqrstuvwxyz', 'bcdefghijklmnopqrstuvwxyza', s)
    shifted
    # Output: "ifmmp xpsme aaa"
    

    La función chartr() realiza una traducción de caracteres basada en mapeos especificados por el usuario. En este caso, mapeamos cada carácter alfabético al siguiente en la línea utilizando los rangos a-z y b-z, respectivamente. Esta operación no afecta a los caracteres no alfabéticos como el espacio en la cadena de entrada.

    ¡Espero que esto ayude!

Comments are closed.