我需要找出如何从输出文本框中显示的全名中提取中间名,到目前为止我只能得到中间名和要显示的姓的一半。我遇到的主要问题是我不知道如何获得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
答案 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个问题。