2015-12-22 28 views
5

La mia domanda è praticamente l'opposto di questo: linux bash, camel case string to separate by dashCaso spinale al Camel Caso

Praticamente cercando di prendere some-string-like-this a SomeStringLikeThis.

Chiunque ha ottenuto alcuni sed mezzi magici o di altri di fare questo facilmente?

Come nota a margine, una parte di me crede che, per quanto popolare come Bash, ci possa essere una libreria là fuori che potrebbe aiutare con conversioni come questa ... Non l'ho trovata però. Se ne conoscete uno, per favore fatemelo sapere. per esempio. una libreria che avrebbe gestito comuni manipolazioni di stringhe/conversione tra stili di denominazione standard, come la colonna vertebrale a sottolineare, sottolineare al cammello, cammello spinale, ecc

risposta

9

Questo funziona con GNU sed:

sed -r 's/(^|-)(\w)/\U\2/g' 

Partita la inizio della linea o - seguito da un carattere alfanumerico e utilizzare \U per rendere il carattere maiuscolo.

è quasi identico in perl:

perl -pe 's/(^|-)(\w)/\U$2/g' 

Solo per divertimento, ecco un modo che si possa fare in bash nativa:

spinal_to_upper() { 
    IFS=- read -ra str <<<"$1" 
    printf '%s' "${str[@]^}" 
} 

spinal_to_upper "some-string-like-this" 
-3

è molto facile

$string='this-is-a-string' ; 

    echo str_replace('-', '', ucwords($string, "-")); 

uscita ThisIsAString

+1

È PHP? OP stava chiedendo un comando sed. – JasonK