GNU/Linux >> Znalost Linux >  >> Linux

Samostatné prvky slov Camelcase?

Existuje způsob, jak rozdělit slova CamelCase na „vnitřních“ hranicích slov v textu?

Například zadaný řetězec:

IamHelloTest forYou PickTest; 

jako vstup bych chtěl produkovat jako výstup:

Iam
Hello
Test
for
You
Pick
Test

Aktualizace: Nyní, když má otázka mnoho užitečných odpovědí, jak bych měl postupovat, abych zahrnul i následující případy?

Vstup:

IamTestECHO TEST PickFoo BARFull;

Požadovaný výstup:

I
am
Test
ECHO
TEST
Pick
Foo
Bar
FULL

Aktualizace: jak mám postupovat, abych zahrnul i podtržítko?

Vstup:

IamTestECHO TEST PickFoo BARFull def_python_FunctionTwo;

Požadovaný výstup:

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

Přijatá odpověď:

Chcete-li se vypořádat s vaším druhým příkladem, navrhněte přístup více „založený na pravidlech“.
Zvažte následující skript v Perlu (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                                     # 
  • Řádek 1:použijte Unicode (pro zpracování akcentů, azbuku)
  • Řádek 2:nahraďte jiná než písmena „\n“
  • řádek 3,4,5:pravidla pro přerušení slova (definovaná levým kontextem, pravým kontextem)
  • řádek 5:pravidla výjimek pro „Iam“
  • řádek 5:x možnost umožňuje přidávat komentáře v regulárních výrazech

Po obvyklém chmod +x camelcaseproc můžeme jej použít jako:

$ 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. Jednoduchý test PHP Mail

  2. Telnet k portu pro testování síťové konektivity

  3. Jak otestovat balíček bez jeho instalace v Linuxu

  1. Kočičí čára X do čáry Y na obrovském souboru?

  2. Najít N nejfrekventovanějších slov v souboru?

  3. Shell Test najít vzor v řetězci?

  1. Otestujte týdenní úlohu cronu

  2. Rozdělte velmi dlouhou řadu slov na samostatné řádky o maximální délce

  3. Obrácení obsahu proměnné slovy