2015-12-07 21 views
10

voglio rimuovere gli spazi aggiuntivi, aggiungere spazi se necessario e capitalizzare prima lettera di ogni parola dopo carattere speciale utilizzando Rmaiuscola dopo i caratteri speciali in R

string <- "apple,banana, cat, doll and donkey;  fish,goat" 

voglio uscita come

Apple, Banana, Cat, Doll and donkey; Fish, Goat 

ho provato

gsub("(^.|,.|;.)", "\\U\\1", string, perl=T, useBytes = F) 

non ha funzionato. Si prega di aiutare

+0

è necessario consentire spazi bianchi 'gsub (" (^. | [,;] \\ s *.) "," \\ U \\ 1 ", string, perl = TRUE)' – rawr

risposta

5

È possibile utilizzare

string <- "apple,banana, cat, doll and donkey;  fish,goat" 
trimws(gsub("(^|\\p{P})\\s*(.)", "\\1 \\U\\2", string, perl=T)) 
## => [1] "Apple, Banana, Cat, Doll and donkey; Fish, Goat" 

Vedi this IDEONE demo

I PCRE partite regex:

  • (^|\\p{P}) - (Gruppo 1) all'inizio di stringa o una qualsiasi punteggiatura
  • \\s* - 0 o più simboli di spazi vuoti
  • (.) - (Gruppo 2) qualsiasi carattere, ma un ritorno a capo

La sostituzione:

  • \\1 - backreference Gruppo 1
  • - inserisce uno spazio tra la punteggiatura e il carattere successivo o al inizio della stringa
  • \\U\\2 - trasforma il carattere di gruppo 2 in maiuscolo

E trimws rimuove lo spazio iniziale che abbiamo aggiunto con la regex.