【问题标题】:How can I display a name in a different sequence using strings?如何使用字符串以不同的顺序显示名称?
【发布时间】:2016-06-09 14:20:12
【问题描述】:

我遇到了分配给我的 Visual Basic 2012 课程的问题。说明如下。到目前为止,我只显示输入的名字,没有别的。如何让它按请求的顺序显示名字和姓氏?

字符串问题:在文本框中输入您的名字和姓氏。取名字并将其显示在一个标签框中,显示姓氏、名字。

文本框条目:Jane Doe

标签框:Doe, Jane

我到目前为止的代码如下。感谢您的帮助!

Private Sub btndisplay_Click(sender As Object, e As EventArgs) Handles btndisplay.Click
    Dim fullname As String
    Dim firstname As String
    Dim indexnum As Integer
    Dim lastname As String

    fullname = fulltextbox.Text

    indexnum = fullname.IndexOf(" ")

    firstname = fullname.Substring(0, indexnum)

    firstlabel.Text = firstname
    fulltextbox.Focus()
End Sub

Private Sub fulltextbox_TextChanged(sender As Object, e As EventArgs)
    firstlabel.Text = String.Empty

    fulltextbox.SelectAll()
End Sub

Private Sub btnexit_Click(sender As Object, e As EventArgs) Handles btnexit.Click
    Me.Close()
End Sub

【问题讨论】:

  • 点击按钮时标签是否应该改变?

标签: vb.net string


【解决方案1】:

首先确定空间的位置是正确的:

indexnum = fullname.IndexOf(" ")

现在基于这个索引,你可以将字符串拆分成两个字符串,firstnamelastname

firstname = fullname.Substring(0, indexnum)
lastname = fullname.Substring(indexnum+1)

您需要使用indexnum+1,而不是indexnum,否则会包含空格字符。

最后,您使用string concatenation operator (&) 再次将它们组合在一起:

firstlabel.Text = lastname & ", " & firstname

最终的方法如下所示:

Private Sub btndisplay_Click(sender As Object, e As EventArgs) Handles btndisplay.Click
    Dim fullname As String
    Dim firstname As String
    Dim indexnum As Integer
    Dim lastname As String

    fullname = fulltextbox.Text

    indexnum = fullname.IndexOf(" ")

    firstname = fullname.Substring(0, indexnum)
    lastname = fullname.Substring(indexnum+1)

    firstlabel.Text = lastname & ", " & firstname
    fulltextbox.Focus()
End Sub

【讨论】:

    【解决方案2】:

    请注意,如果您使用中间名首字母,这将不起作用。另外,我会从fulltextbox_TextChanged 中删除fulltextbox.SelectAll()

    Private Sub btndisplay_Click(sender As Object, e As EventArgs) Handles btndisplay.Click
    
        Dim Names() As String = fulltextbox.Text.Split(" "c)
    
        If Names.Count = 2 Then
            firstlabel.Text = Names(1) + ", " + Names(0)
        ElseIf Names.Count = 0 Then
            MessageBox.Show("Please enter name.")
        Else
            MessageBox.Show("Invalid Nmae entered.")
        End If
    
        fulltextbox.Text = ""
    
    End Sub
    

    【讨论】:

    • 这个不起作用,因为 Option Strict On 不允许从 String 到 Char 的隐式对话,但感谢您抽出宝贵时间回答!
    • 我修好了。 Dim Names() As String = fulltextbox.Text.Split(" "c)
    猜你喜欢
    • 1970-01-01
    • 2014-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-26
    • 1970-01-01
    • 2015-11-26
    相关资源
    最近更新 更多