2012-04-08 10 views
35

Próbuję podzielić ciąg przez czapki przy użyciu JavaScript,Splitu Caps w JavaScript

Przykłady co Im próbuje zrobić:

"HiMyNameIsBob" -> "Hi My Name Is Bob" 
"GreetingsFriends" -> "Greetings Friends" 

Jestem świadomy sposobu str.split() jednak ja nie wiem, jak sprawić, aby ta funkcja działała wielkimi literami.

Próbowałem:

str.split("(?=\\p{Upper})") 

Niestety to nie działa, jakiejkolwiek pomocy byłoby świetnie.

Odpowiedz

84

Użyj RegExp-literały, wygląd wyprzedzeniem i [A-Z]:

"HiMyNameIsBob".split(/(?=[A-Z])/).join(" "); // -> "Hi My Name Is Bob" 
+0

Świetnie! Nie wiedziałem, że to będzie takie proste, nie mogłem znaleźć niczego w Google, Dzięki – user1294188

+7

Nie można się tu wybrednie, ale też tego potrzebowałem. Powyższa odpowiedź NIE zwraca "Hi My Name Is Bob". Zwraca tablicę. Aby uzyskać ciąg znaków, wykonaj następujące czynności: 'input.split (/ (? = [AZ]) /). Join (" ");' – Grandizer

+1

Zaktualizowano tę odpowiedź dzięki @Grandizer –

8

Można użyć String.match aby je rozdzielić.

"HiMyNameIsBob".match(/[A-Z]*[^A-Z]+/g) 
// output 
// ["Hi", "My", "Name", "Is", "Bob"] 

Jeśli masz małe litery na początku, możesz je również podzielić. Jeśli nie chcesz tego zachowania, po prostu użyj wzoru + zamiast *.

"helloHiMyNameIsBob".match(/[A-Z]*[^A-Z]+/g) 
// Output 
["hello", "Hi", "My", "Name", "Is", "Bob"] 
+0

Schludnie, nie zrobiłem tego Wiesz o tym, dzięki za heads up! – user1294188

+0

Wzór musi zostać zmieniony. Obecnie nie pasuje do poprzedzających małych liter lub pojedynczych wielkich liter. –

+0

IE pozwala na użycie metody podziału. –

Powiązane problemy