Saya punya string:
AddData
TestSomething
TellMeWhoYouAre
dan seterusnya. Saya ingin menambahkan spasi sebelum huruf besar. Bagaimana saya bisa melakukannya?
linux
command-line
text-formatting
HeroFromEarth
sumber
sumber
IClimbALadder
ReadFileFromCDDrive
dan solusi @Kusalananda berfungsi dengan baik.Jawaban:
Menggunakan
sed
, dan dengan asumsi Anda tidak ingin spasi di depan kata:Substitusi akan mencari huruf besar segera setelah karakter non-spasi putih lainnya, dan menyisipkan spasi di antara keduanya.
Untuk string dengan lebih dari satu karakter huruf besar berturut-turut, seperti
WeAreATeam
, ini menghasilkanWe Are ATeam
. Untuk mengurutkan ini, jalankan subtitusi kedua kalinya:sumber
g
bendera. Cobaecho ThisIsATest | sed 's/\(.\)\([[:upper:]]\)/\1 \2/g'
(perintah Anda) untuk melihat mengapa itu tidak berhasil.s/[A-Z]/ \0/g
sepenuhnya memuaskan ... `s / [AZ] / \ 0 / g; s / ^ // 'jika Anda benar-benar peduli.Perl, menggunakan lookbehind dan lookahead ekspresi reguler nol-lebar:
Versi ini juga memisahkan huruf besar berturut-turut.
sumber
ReadFileFromUSBDrive
menjadiRead File From U S B Drive
yang diinginkan OPRead File From USB Drive
.Tambahkan spasi antara huruf yang bukan huruf besar dan huruf yang merupakan huruf besar
sumber
[^^]
("bukan tanda sisipan (^
)")?Solusi Python:
Uji coba:
sumber
print(line[0], end="")
diikuti olehfor char in line[1:]:
untuk menghindari mencetak ruang yang tidak diinginkan di awal setiap baris output.