2013-08-29 75 views
18

Có phiên bản nào khác để làm chữ cái đầu tiên của mỗi chuỗi ký tự và cũng với FALSE cho flac perl không?Chữ cái đầu tiên viết hoa

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

Nó luôn luôn chỉ là một từ? Điều này có thể giúp - [Làm thế nào để chuyển đổi một vectơ của chuỗi thành Title Case] ​​(http://stackoverflow.com/questions/15776732/how-to-convert-a-vector-of-strings-to-title-case). Xem câu trả lời bằng cách @mnel – zx8754

+3

Các ví dụ trong 'toupper' có thể hữu ích, ví dụ: '.simpleCap' – Henrik

+0

@Henrik vốn tận dụng mọi từ. –

Trả lời

35

Bạn có thể thử một cái gì đó như:

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

Hoặc một cách khác là phải có một chức năng như:

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

Ví dụ:

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

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

Điều này tôi cũng xem ra nhưng nó trông không linh hoạt nếu một cái gì đó sẽ thay đổi sau này – Klaus

+10

@Klaus nhưng nó * chính xác * trả lời câu hỏi bạn đã đăng. Đó là * thực sự * hình thức xấu để thay đổi các tham số của câu hỏi * sau * ai đó đã đăng câu trả lời làm việc. Không mát mẻ/công bằng! Đặt một câu hỏi mới. –

10

cho typer lười biếng :

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

cũng sẽ làm.

+2

Nếu bởi "siêu lười biếng" bạn có nghĩa là "biết rằng' paste0 (x) 'tồn tại và tương đương với' dán (x, sep = '') '". –

+0

@KonradRudolph bạn là 100% đúng -> Với lười biếng tôi có nghĩa là chỉ cần ít mã hơn để nhập và duy trì. (có thể tạo nên sự khác biệt nếu bạn bắt đầu nối mã vào một dòng Lập trình Chức năng - như tôi làm rất nhiều -): ^) – irJvV

+0

Và paste0 nhanh hơn. – RHA

6

Sử dụng stringi mà sẽ chăm sóc của quốc tế phức tạp, unicode, vv, bạn có thể làm: stri_trans_totitle("kaCk, DSJAIDO, Sasdd.", opts_brkiter = stri_opts_brkiter(type = "sentence"))

Có một C hoặc thư viện C++ bên dưới stringi.

Thật không may là stringr của Hadley Wickham không bao hàm chức năng này, nhưng đơn giản hóa rất nhiều chức năng stringi bằng cách gói các phần thiết yếu.

+3

Bây giờ có một trình bao bọc stringr: 'str_to_title' – fikovnik

Các vấn đề liên quan