2013-02-27 17 views
9

Znalazłem to podobne pytanie, ale nie odpowiada na moje pytanie, Split word by capital letter.Split z wielkimi literami w PHP?

Mam ciąg znaków, który jest camel case. Chcę podzielić ten ciąg na każdą wielką literę, jak poniżej.

$str = 'CamelCase'; // array('Camel', 'Case'); 

mam tak daleko:

$parts = preg_split('/(?=[A-Z])/', 'CamelCase'); 

Ale otrzymaną macierz zawsze kończy się pustym wartości na początek! $parts wygląda to

$parts = array('', 'Camel', 'Case'); 

Jak mogę pozbyć się pustą wartość na początku tablicy?

Odpowiedz

2

filtr Array może być stosowany w celu usunięcia wszystkich pustych wartości:

$parts = array_filter($parts, 'strlen'); 
+1

Chce wygenerować poprawną tablicę, a nie naprawić uszkodzoną. – Will

+1

Biorąc pod uwagę odpowiedź Kary, nie jest to najlepsza odpowiedź, ale w mojej obronie pytający wyraźnie zapytał "Jak mogę pozbyć się pustej wartości na początku tablicy?" – Jim

3

Potrzebny jest pozytywny-lookbehind. Wypróbuj to:

$parts = preg_split('/(?<=\\w)(?=[A-Z])/', 'CamelCase') 

array(2) { 
    [0]=> 
    string(5) "Camel" 
    [1]=> 
    string(4) "Case" 
} 
+1

Przyjemne podejście, ale @Kara wygrywa to dzięki jego, dzięki! – ShaShads

+0

Wydaje się, że nie działa z 'C CamelCase', może wymagać korekty, jeśli mogą być spacje. –

+0

@Wesley, spacje nie były oryginalnymi wymaganiami, ale to działałoby: preg_split ('/ (?: (? <= \\ w) (? = [A-Z]) |) /', 'C CamelCase') – Will

Powiązane problemy