GNU/Linux >> Belajar Linux >  >> Linux

Elemen Terpisah Dari Kata Unta?

Apakah ada cara untuk memisahkan kata CamelCase pada batas kata "internal" dalam teks?

Misalnya, diberikan string:

IamHelloTest forYou PickTest; 

sebagai input, saya ingin menghasilkan sebagai output:

Iam
Hello
Test
for
You
Pick
Test

Pembaruan: sekarang pertanyaannya memiliki banyak jawaban yang membantu, bagaimana saya melanjutkan untuk memasukkan kasus-kasus berikut juga?

Masukan:

IamTestECHO TEST PickFoo BARFull;

Keluaran yang diinginkan:

I
am
Test
ECHO
TEST
Pick
Foo
Bar
FULL

Pembaruan: bagaimana saya melanjutkan untuk memasukkan garis bawah juga?

Masukan:

IamTestECHO TEST PickFoo BARFull def_python_FunctionTwo;

Keluaran yang diinginkan:

I
am
Test
ECHO
TEST
Pick
Foo
Bar
FULL
def
python
Function
Two

Jawaban yang Diterima:

Untuk menangani contoh kedua Anda, sarankan pendekatan yang lebih "berbasis aturan".
Pertimbangkan skrip Perl berikut (camelcaseproc ):

#!/usr/bin/perl -CSDA -p

s{  \W+                                     # break on non-word
 |  _                                       # break on "_"
 |  (?<=\p{Ll})(?=\p{Lu})                   # ...aB... → ...a-B...
 |  (?<=\p{Lu})(?=\p{Lu}\p{Ll})             # ..ABCd.. → ...AB-Cd.
 |  (?<=I)(?=am)                            # exceptions rules
 }{-}xg                                     # 
  • Baris 1:gunakan Unicode (untuk memproses aksen, Sirilik)
  • Baris 2:ganti bukan huruf dengan “\n”
  • baris 3,4,5:aturan break-intraWord (didefinisikan oleh konteks kiri, konteks kanan)
  • baris 5:aturan pengecualian untuk “Iam”
  • baris 5:x opsi memungkinkan untuk menambahkan komentar dalam ekspresi reguler

Setelah chmod +x camelcaseproc biasa kita dapat menggunakannya sebagai:

$ camelcaseproc <<< "IamTestECHO TEST PickFoo BARFull"
I-am-Test-ECHO-TEST-Pick-Foo-BAR-Full

$ camelcaseproc input-file

$ echo "IamTestECHO TEST PickFoo BARFull" | camelcaseproc

Linux
  1. Menguji secara efisien apakah port terbuka di Linux?

  2. Pisahkan baris kata yang sangat panjang menjadi baris terpisah dengan panjang maksimal

  3. Temukan kata-kata berulang dalam teks

  1. Cara Menginstal dan Menguji Ansible di Linux

  2. Telnet ke Port untuk Menguji Konektivitas Jaringan

  3. Membalik isi variabel dengan kata-kata

  1. Tes Surat PHP sederhana

  2. Cara Menguji Paket Tanpa Menginstalnya Di Linux

  3. Temukan N Kata Paling Sering Dalam Sebuah File?