2013-08-29 13 views
18

各文字列の最初の文字を作成するバージョンはありますか?また、flac perlの場合はFALSEですか?大文字に変換する最初の文字

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

常に1つの単語ですか?これは、[文字列のベクトルをタイトルケースに変換する方法](http://stackoverflow.com/questions/15776732/how-to-convert-a-vector-of-strings-to-title-case)に役立ちます。 @mnelによる回答を参照してください。 – zx8754

+3

'toupper 'の例が役に立ちます。 '.simpleCap' – Henrik

+0

@Henrikすべての単語を大文字にします。 –

答えて

35

あなたのような何か試すことができます。

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

例::怠惰なタイパー用

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

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

これも私も見ましたが、後で何かが変わるとそれほど柔軟性がないように見えます – Klaus

+10

@Klausしかし、あなたが投稿した質問には*正確に答えます。誰かが実用的な答えを投稿した後、*質問のパラメータを変更するのは本当に悪いフォームです。クールではない/公正!新しい質問をする。 –

10

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

それとも別の方法をのような機能を持つことです:

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

も行います。

など
+2

"super lazy"とは、 "paste0(x)'が存在し、 'paste(x、sep = '')' "と同等であることを意味する場合。 –

+0

@KonradRudolphあなたは100%右です - >怠け者の場合は、入力と保守のコードが少なくて済みます。 (コードを1つのFunctional Programmingラインに連結し始めるとかなりの違いがあります - ^) – irJvV

+0

そしてpaste0はより高速です。 – RHA

6
複雑な国際化の世話を stringiを使用して

、ユニコード、あなたが行うことができます: stri_trans_totitle("kaCk, DSJAIDO, Sasdd.", opts_brkiter = stri_opts_brkiter(type = "sentence"))

stringiの下にCまたはC++ライブラリがあります。

残念ながら、Hadley Wickhamのstringrはこの関数をラップしませんが、重要な部分をラップすることによって多くのstringi関数を単純化します。

+3

今度は、文字列ラッパーがあります: 'str_to_title' – fikovnik

関連する問題