2013-08-29 28 views
18

Czy istnieje inna wersja, która tworzy pierwszą literę każdego kapitału strunowego, a także FALSE dla flac perl?Pierwsza litera na dużą literę

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

Czy to zawsze tylko jedno słowo? To może pomóc - [Jak przekonwertować wektor ciągów znaków do tytułu] (http://stackoverflow.com/questions/15776732/how-to-convert-a-vector-of-strings-to-title-case). Zobacz odpowiedź @mnel – zx8754

+3

Przykłady w 'toupper' mogą być przydatne, np. '.simpleCap' – Henrik

+0

@Henrik, który kapitalizuje każde słowo. –

Odpowiedz

35

Można spróbować czegoś takiego:

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

czy inny sposób jest mieć funkcji takich jak:

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

Przykłady:

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

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

To też obejrzałem, ale wygląda na niezbyt elastycznie, jeśli coś się zmieni później: – Klaus

+10

@Klaus, ale to * dokładnie * odpowiedzi na wysłane przez Ciebie pytanie. To * naprawdę * zła forma do zmiany parametrów pytania * po * ktoś opublikował działającą odpowiedź. Nie fajne/uczciwe! Zadaj nowe pytanie. –

10

dla leniwych Typer :

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

również.

+2

Jeśli przez "super leniwy" masz na myśli "wie, że' paste0 (x) 'istnieje i jest równoważne' paste (x, sep = '') '". –

+0

@KonradRudolph masz 100% racji -> Z lenią mam na myśli tylko mniej kodu do pisania i utrzymywania. (Może zrobić różnicę, jeśli zaczniesz łączyć kod w jedną Funkcjonalną Linię Programowania - tak jak ja to robię -): ^) – irJvV

+0

A paste0 jest szybsze. – RHA

6

Korzystanie stringi który dba o złożonej internacjonalizacji, Unicode, etc., można zrobić: stri_trans_totitle("kaCk, DSJAIDO, Sasdd.", opts_brkiter = stri_opts_brkiter(type = "sentence"))

Jest C lub C++ biblioteka pod stringi.

Niestety Hadley Wickham's stringr nie zawija tej funkcji, ale upraszcza wiele funkcji stringi poprzez owijanie najważniejszych części.

+3

Istnieje teraz opakowanie owijki: 'str_to_title' – fikovnik

Powiązane problemy