【问题标题】:using toupper and tolower in visual basic在 Visual Basic 中使用 toupper 和 tolower
【发布时间】:2013-04-05 08:38:38
【问题描述】:

试图让这个改变解析字符串段的第一个字母的大小写。因此,如果用户在 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)

【问题讨论】:

    标签: vb.net case tolower toupper


    【解决方案1】:

    只是提到这个替代方案

    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)
    ......
    

    此方法可确保字符串的大小写符合当前文化。
    并且不需要如此多的直接拆分和字符串连接以及固有的内存占用。 (内部使用 StringBuilder 来操作输入字符串,最后只有一个 ToString() 来返回结果)

    【讨论】:

    • +1 表示.ToTitleCase 的用法,我个人从未遇到过。
    • 是的,有时使用 NET 库进行挖掘就像是寻宝。
    【解决方案2】:

    试试这个:

    MessageBox.Show(_
        "First Name: " & firstLetters1 & otherletters1 & vbCrLf & _
        "Middle Name: " & firstLetters2 & otherletters2 & vbCrLf & _ 
        "Last Name: " & firstLetters3 & otherletters3)
    

    String 是不可变类,您的 ToUpperToLower 调用会创建新实例。在消息框中,您传递的是旧的未处理实例。


    更新 或者,您可以使用我们的旧电话:

     MessageBox.Show("First Name: " & firstName & vbCrLf & "Middle Name: " & middleName & vbCrLf & "Last Name: " & lastName)
    

    只要你以前这样做过:

    firstName = firstLetters1 & otherletters1
    middleName = firstLetters2 & otherletters2
    lastName = firstLetters3 & otherletters3
    

    这可能会让您更好地了解字符串的不变性是如何工作的。

    【讨论】:

    • +1 成功了,现在我看到它像这样输入到消息框块中,这很有意义。我的书只提供了如何使用 toupper 和 tolower 的示例,但没有提供如何将它们传递到消息框。
    【解决方案3】:
    Dim Name As String = "JOHN WAYNE DOE"
    Name = Microsoft.VisualBasic.StrConv(Name, VbStrConv.ProperCase)
    

    将给出输出“John Wayne Doe”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-11
      • 2014-08-15
      • 2017-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多