2015-12-07 5 views
10

ich zusätzliche Leerzeichen entfernen möchten, Leerzeichen hinzufügen, wenn erforderlich und ersten Buchstaben jedes nach Sonderzeichen Wort kapitalisieren mit RGroßbuchstaben nach Sonderzeichen in R

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

Ich möchte Ausgabe als

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

ich versuchte

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

Es hat nicht funktioniert. Bitte helfen

+0

müssen Sie whitespace 'gsub (" (^. | [,;] \\ s *.) "," \\ U \\ 1 ", string, perl = TRUE)' erlauben – rawr

Antwort

5

Sie können

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" 

Siehe this IDEONE demo

Die PCRE regex Spiele:

  • (^|\\p{P}) - (Gruppe 1) Beginn der Zeichenfolge oder jede Interpunktion
  • \\s* - 0 oder mehr Leerzeichen-Symbole
  • (.) - (Gruppe 2) alle Zeichen, sondern ein Neuer-Zeile-

Der Ersatz:

  • \\1 - Rückreferenzierungen Gruppe 1
  • - einen Raum zwischen dem Interpunktions einfügt und dem nächsten Zeichen oder am Anfang der Zeichenfolge
  • \\U\\2 - wandelt die Großbuchstaben der Gruppe 2 um

Und trimws entfernt den anfänglichen Raum, den wir mit dem Regex hinzugefügt haben.