在visual basic中使用toupper和tolower

the*_*ver 2 vb.net case toupper tolower

试图让它改变解析的字符串段的第一个字母的大小写.因此,如果用户在txtName中输入"JOHN WAYNE DOE",那么它将显示"John Wayne Doe",我按照它在书中显示的方式输入它,但是消息框显示已解析的字符串,但是它已输入,因此在上面的示例中返回是"JOHN WAYNE DOE"我认为它是一个逻辑错误,因为我知道这样做很多只是不知道我在哪里犯了错误.

    Dim name As String = txtName.Text
    name = name.Trim
    Dim names() As String = name.Split(CChar(" "))
    Dim firstName As String = names(0)
    Dim middleName As String = names(1)
    Dim lastName As String = names(2)

    Dim firstLetters1 As String = firstName.Substring(0, 1).ToUpper
    Dim otherletters1 As String = firstName.Substring(1).ToLower

    Dim firstLetters2 As String = middleName.Substring(0, 1).ToUpper
    Dim otherletters2 As String = middleName.Substring(1).ToLower

    Dim firstletters3 As String = lastName.Substring(0, 1).ToUpper
    Dim otherletters3 As String = lastName.Substring(1).ToLower

    MessageBox.Show("First Name: " & firstName & vbCrLf & "Middle Name: " & middleName & vbCrLf & "Last Name: " & lastName)
Run Code Online (Sandbox Code Playgroud)

Ste*_*eve 5

只是提到这个替代方案

Dim currentCulture As CultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture 
Dim titleCase = currentCulture.TextInfo.ToTitleCase(txtName.Text)
Console.WriteLine(titleCase)
Dim names() As String = titleCase.Split(" "c)
......
Run Code Online (Sandbox Code Playgroud)

这种方法确保弦的正确套管符合当前的文化.
并且不需要如此多的直接拆分和字符串连接与固有的内存占用.(在内部,StringBuilder用于操作输入字符串,只有一个最终的ToString()返回结果)