提取中间名

时间:2014-06-02 18:39:46

标签: vb.net substring

我需要找出如何从输出文本框中显示的全名中提取中间名,到目前为止我只能得到中间名和要显示的姓的一半。我遇到的主要问题是我不知道如何获得indexOf分隔中间名和姓的第二个空格。代码到目前为止:

Private Sub btnClick_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClick.Click
    Dim fullname, firstname, middlename, lastname As String
    Dim n, m As Integer

    fullname = txtFullName.Text
    n = fullname.IndexOf(" ")
    m = fullname.LastIndexOf(" ")
    firstname = fullname.Substring(0, n)
    lastname = fullname.Substring(m + 1)
    middlename = fullname.Substring(n, m)
    txtMiddleName.Text = middlename

End Su

2 个答案:

答案 0 :(得分:2)

找到第一个空格后,将字符串拆分为两个字符串,一个字符串包含第一个空格之前的所有字符串,另一个字符串包含所有字符串。然后你可以在第一个空格中拆分第二个字符串以提取中间名。

然而,我应该指出,这完全是胡说八道,因为它会对人类如何命名做出虚假的假设。名字中有空格。 " Mary Lou"和约翰亨利"都可以是名字。

确实有一个名叫" Yuv Raj Vig"。你觉得他的名字是什么?它不是" Yuv"。它可能是" Raj",因为" Yuv"可以是一个标题,但它也不是。

答案 1 :(得分:1)

我会使用String.Split()函数来破坏空格字符上的字符串(如果名称之间有额外的空格,则告诉它忽略顺序分隔符)。这将为您提供名称中每个“单词”的数组。如果数组的长度恰好为3,则可以通过查看第2个元素来获取中间名。如果长度不是3,那么就无法确定哪个是中间名。

    Dim name As String = "James Tiberius Kirk"
    Dim names() As String = name.Split({" "c}, StringSplitOptions.RemoveEmptyEntries)
    If names.Length = 3 Then
        Debug.WriteLine(String.Format("The middle name is {0}.", names(1)))
    End If

使用RegEx分割你可能会变得更加漂亮,但是你会遇到2个问题。