questo non è qualcosa che avrei normalmente si usa un'espressione regolare per, ma la mia soluzione non è esattamente quello che si chiama "bello":
$string = join("", map(ucfirst, split(/(\s+)/, $string)));
Che split()
s la stringa da spazi bianchi e cattura tutte lo spazio bianco, quindi passa attraverso ogni elemento della lista e fa ucfirst
su di loro (rendendo il primo carattere maiuscolo), quindi join()
s loro di nuovo insieme come una singola stringa. Non terribile, ma forse ti piacerà più una regex. Personalmente non mi piace il \Q
o \U
o altri costrutti regex semi-imbarazzanti.
MODIFICA: qualcun altro ha affermato che la punteggiatura potrebbe essere un potenziale problema. Se, per esempio, si desidera che questo:
...string
cambiato a questo:
...String
per esempio, si desidera che le parole in maiuscolo, anche se non c'è la punteggiatura prima di loro, provare qualcosa di più simile a questo:
$string = join("", map(ucfirst, split(/(\w+)/, $string)));
Stessa cosa, ma è split()
s su parole (\w+
) in modo che gli elementi catturati dell'elenco siano di sola parola. Lo stesso effetto generale, ma capitalizzerà le parole che potrebbero non iniziare con un carattere di parola. Modificare \w
a [a-zA-Z]
per eliminare il tentativo di utilizzare i numeri maiuscoli. E solo generalmente modificarlo come preferisci.
fonte
2009-03-09 16:17:44
Cosa stai cercando di fare? Se stai cercando di rendere le cose con titolo? C'è un perlfaq per quello. –
chiedere su SO è più veloce, e sono sicuro che andrà a beneficio di qualcun altro da qualche parte nel mondo una volta che Google lo indicizza. non uso perl abbastanza spesso da ricordare tutti i piccoli trucchi che conoscevo – Kip