Mejorando la legibilidad de la generación automática de texto basada en una consulta de base de datos.
Estoy tratando de mejorar la legibilidad de la generación automática de texto basada en una consulta de base de datos.
¿Hay alguna forma ordenada de realizar estas sustituciones? ¿Se puede hacer lo siguiente en un solo comando en lugar de seis?
x<-c("Te( )st", "Test()","Test ()", "Test ( )", "Test ,,","Test,, ", "Test , ")
out<-c("Test", "Test", "Test", "Test", "Test,", "Test, ", "Test,")
x<-gsub(pattern = "( ", replacement = "(", x, fixed = T)
x<-gsub(pattern = " )", replacement = ")", x, fixed = T)
x<-gsub(pattern = " ,", replacement = ",", x, fixed = T)
x<-gsub(pattern = "()\"", replacement = "", x, fixed = T)
x<-gsub(pattern = ",,", replacement = ",", x, fixed = T)
x<-gsub(pattern = " ,", replacement = ",", x, fixed = T)
davy.ai
Sí, puedes realizar todas las sustituciones en un solo comando utilizando expresiones regulares. Aquí tienes un ejemplo:
El argumento
pattern
utiliza una expresión regular para encontrar cualquier espacio (\\s*
) seguido de uno de los caracteres entre paréntesis([(),])
, y luego más espacios (\\s*
). Los paréntesis capturan el carácter encontrado, que luego se referencia en el argumentoreplacement
utilizando\\1
.Este solo comando debería producir el mismo resultado que los 6 comandos del bloque de código original.