2012-04-08 30 views
35

Sto cercando di dividere una stringa da tappi utilizzando Javascript,Spalato in Caps in Javascript

esempi di che cosa Im cercando di fare:

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

Sono consapevole del metodo str.split(), però io non sono sicuro di come far funzionare questa funzione con lettere maiuscole.

ho provato:

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

Purtroppo che non funziona, qualsiasi aiuto sarebbe grande.

risposta

84

Utilizzare RegExp-letterali, un look-ahead e [A-Z]:

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

Grande! Non sapevo che sarebbe stato così facile, non ho trovato nulla su Google, grazie – user1294188

+7

Non per essere pignoli qui, ma avevo bisogno anche di questo. La risposta sopra NON restituisce "Ciao il mio nome è Bob". Restituisce un array. Per ottenere effettivamente una stringa indietro, fare questo: 'input.split (/ (? = [AZ]) /). Join (" ");' – Grandizer

+1

Aggiornato questa risposta grazie a @Grandizer –

8

È possibile utilizzare String.match di dividerlo.

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

Se si dispone di lettere minuscole all'inizio può dividere anche quello. Se non si desidera questo comportamento, utilizzare + anziché * nel modello.

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

Neat, I did not lo so, grazie per il testa a testa! – user1294188

+0

Il modello deve essere cambiato. Attualmente, non corrisponde ai caratteri minuscoli precedenti o ai caratteri maiuscoli singoli. –

+0

IE consente l'uso del metodo split. –

Problemi correlati