2013-08-29 10 views
18

Gibt es eine andere Version, um den ersten Buchstaben jedes String-Kapitals und auch mit FALSE für Flac-Perl zu machen?Erster Buchstabe nach Großbuchstabe

name<-"hallo" 
gsub("(^[[:alpha:]])", "\\U\\1", name, perl=TRUE) 
+0

Ist es immer nur ein Wort? Dies könnte helfen - [Wie konvertiert man einen Vektor von Zeichenketten in Titel] (http://stackoverflow.com/questions/15776732/how-to-convert-a-vector-of-strings-to-title-case). Siehe Antwort von @Mnel – zx8754

+3

Die Beispiele in "toupper" könnten nützlich sein, z.B. '.simpleCap' – Henrik

+0

@Henrik, die jedes Wort groß macht. –

Antwort

35

können Sie versuchen, so etwas wie:

name<-"hallo" 
paste(toupper(substr(name, 1, 1)), substr(name, 2, nchar(name)), sep="") 

Oder eine andere Art und Weise ist eine Funktion wie haben:

firstup <- function(x) { 
    substr(x, 1, 1) <- toupper(substr(x, 1, 1)) 
x 
} 

Beispiele:

firstup("abcd") 
## [1] Abcd 

firstup(c("hello", "world")) 
## [1] "Hello" "World" 
+0

Das habe ich auch aufgepasst aber es sieht nicht so flexibel aus wenn sich später etwas ändert – Klaus

+10

@Klaus aber es * genau * beantwortet die Frage die du gepostet hast. Es ist * wirklich * schlechte Form, die Parameter der Frage zu ändern * nachdem * jemand eine funktionierende Antwort gepostet hat. Nicht cool/fair! Stellen Sie eine neue Frage. –

10

für die Faulen typer :

paste0(toupper(substr(name, 1, 1)), substr(name, 2, nchar(name))) 

wird auch tun.

+2

Wenn mit "super faul" meinst du "weiß, dass' paste0 (x) 'existiert und ist äquivalent zu' einfügen (x, sep = '') '". –

+0

@KonradRudolph Sie sind 100% richtig -> Mit faul ich meine nur weniger Code zu schreiben und zu pflegen. (kann einen großen Unterschied machen, wenn Sie beginnen, Code in eine Funktionale Programmierzeile zu verketten - so wie ich viel mache): ^) – irJvV

+0

Und paste0 ist schneller. – RHA

6

stringi Mit der Pflege komplexer Internationalisierung nimmt, Unicode, etc., können Sie tun: stri_trans_totitle("kaCk, DSJAIDO, Sasdd.", opts_brkiter = stri_opts_brkiter(type = "sentence"))

Es ist ein C oder C++ Bibliothek unter stringi.

Leider wickelt Hadley Wickham's stringr diese Funktion nicht ein, aber vereinfacht viele stringi Funktionen, indem es die wesentlichen Teile einwickelt.

+3

Nun gibt es einen Stringr Wrapper: 'str_to_title' – fikovnik

Verwandte Themen