文字列の先頭文字だけを大文字に変更してその他の文字は変えない - Capitalize Only First Character of String And Make No Change for Another Characters
失敗 - Failure
文字列の先頭文字だけを大文字に変更してその他の文字は変えない。ということを以下のメソッドで実装しようとした。
I tried to implement "capitalizing only first character of string and make no change for another characters" by using the following method.
Private Function Capitalize(ByVal strTarget As String) As String Capitalize = Application.Proper(strTarget) End Function
でも、"lowerCamelCase"が"Lowercamelcase"となってしまう。
But "lowerCamelCase" converted into "Lowercamelcase".
つまり、文字列の先頭文字だけを大文字に変更して「その他の文字は小文字に」なってしまう。
In short, it works like that capitalize first character and "decapitalize another characters".
これではダメ。
It's too bad.
"lowerCamelCase"を"LowerCamelCase"にしたい。
I wanna change "lowerCamelCase" into "LowerCamelCase".
実装 - Implement
なので、こうした。
Then I implemented like the following.
Private Function UCaseOnlyFirst(ByVal strTarget As String) As String Dim strFirst As String Dim strExceptFirst As String strFirst = UCase(Left$(strTarget, 1)) strExceptFirst = Mid$(strTarget, 2, Len(strTarget)) UCaseOnlyFirst = strFirst & strExceptFirst End Function
テスト - Test
Option Explicit Public Sub TestCaptalization() MsgBox Capitalize("lowerCamelCase") ' Lowercamelcase MsgBox UCaseOnlyFirst("lowerCamelCase") ' LowerCamelCase End Sub Private Function Capitalize(ByVal strTarget As String) As String Capitalize = Application.Proper(strTarget) End Function Private Function UCaseOnlyFirst(ByVal strTarget As String) As String Dim strFirst As String Dim strExceptFirst As String strFirst = UCase(Left$(strTarget, 1)) strExceptFirst = Mid$(strTarget, 2, Len(strTarget)) UCaseOnlyFirst = strFirst & strExceptFirst End Function
おk。
Now, good.
もっとKOOLなやり方は無いのだろうか。。
I wonder there is any KOOLer ways ...
−ω− Ruby の String#capitalize も、上記の Application.Proper と同じ挙動をすることが分かった。
−ω− 追記 May 14, 2009: Ruby の ActiveSupport::CoreExtensions::String::Inflections の camelize で、UCaseOnlyFirst できると分かった。