Tengo unas cuerdas:
AddData
TestSomething
TellMeWhoYouAre
y así. Quiero agregar espacio antes de las letras mayúsculas. ¿Cómo puedo hacerlo?
linux
command-line
text-formatting
HéroeDe Tierra
fuente
fuente
IClimbALadder
ReadFileFromCDDrive
algunas cadenas como y la solución de @Kusalananda funciona muy bien.Respuestas:
Usando
sed
, y asumiendo que no quieres un espacio delante de la palabra:La sustitución buscará una letra mayúscula inmediatamente después de otro carácter que no sea un espacio en blanco e insertará un espacio entre los dos.
Para cadenas con más de un carácter de mayúsculas consecutivas, como
WeAreATeam
, esto produceWe Are ATeam
. Para ordenar esto, ejecute la sustitución por segunda vez:fuente
g
bandera. Pruebeecho ThisIsATest | sed 's/\(.\)\([[:upper:]]\)/\1 \2/g'
(su comando) para ver por qué no funciona.s/[A-Z]/ \0/g
es completamente satisfactorio ... `s / [AZ] / \ 0 / g; s / ^ // 'si realmente te importa.Perl, usando expresiones regulares de ancho cero y mirar hacia atrás:
Esta versión también está separando letras mayúsculas consecutivas.
fuente
ReadFileFromUSBDrive
enRead File From U S B Drive
mientras que el OP queríaRead File From USB Drive
.Agregue espacio entre una letra que no es mayúscula y una letra que es mayúscula
fuente
[^^]
("not a caret (^
)")?Solución Python:
Prueba de funcionamiento:
fuente
print(line[0], end="")
seguirfor char in line[1:]:
para evitar imprimir ese espacio no deseado al comienzo de cada línea de salida.