开发者

VB.NET string manipulation -- caps to only one letter caps

So I have a string "NEW".

What is the SIMPLEST way to convert that string to "New".

Basically right now I'm doing this:

Case "NEW"
    makes = connector.GetMakesByYear(_AuthorizationKey, "NewCar", CDate(Now), Year)
Case "USED"
    makes = connector.GetMakesByYear(_AuthorizationKey, "UsedCar", CDate(Now), Year)

And I would prefer not to use a case statement b开发者_开发百科ecause it's only one parameter that needs to change, and both are appended with "Car".


Using the “old” string functions, you can use this:

result = StrConv("hello world", VbStrConv.ProperCase)

to convert a string to “proper case”. However, in your case this would probably result in (if I read this right) “Usercar”, not “UserCar”.


You may use:

String.Format("{0}{1}", carType.Substring(0, 1).ToUpper(), carType.Substring(1).ToLower())

Regards


If this is something you plan on using often, you might consider creating an extension function for it:

Public Module ObjectExtensions
    <System.Runtime.CompilerServices.Extension()>
    Public Function firstLetterToUpper(ByVal s As String) As String
        Return Char.ToUpper(s.First()) + New String(s.Skip(1).Select(Function(x) Char.ToLower(x)).ToArray())
    End Function
End Module

Then you can do something like this:

"USED".firstLetterToUpper()

Which returns "Used"

Obviously you can change the function body with something more efficient like Guilherme's or Konrad's answer, but making an extension function for this can be quite useful if you do plan on doing something like this often, or if you are just a fan of readability.


Here what I have done!

Function InitUpperCase(ByVal str As String) As String
    If String.IsNullOrEmpty(str) Then
        Return str
    End If
    Dim charlist() As Char = str.ToCharArray
    charlist(0) = Char.ToUpper(charlist(0))
    Return New String(charlist)
End Function

to see Output

MessageBox.Show(InitUpperCase("my first letter"))
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜