2016-11-09 89 views
1

要比标题更具体......这里是一个使用字符串的例子:“你从John Doe收到了25美元”我需要nameDonated才能得到John或John Doe的名字,这取决于字符串是否有名字或名字和姓氏。以下是我在字符串中显示John Doe的代码,但它只能得到John而不是全名John Doe。我正在使用Visual Basic 2010.任何人都可以提供帮助吗?如何分割字符串以获取字符串中的最后一个单词或2个单词,但不知道字符或结束单词的数量?

Dim myString As String = "You have received 25 dollars from John Doe" 

Dim fields() As String = myString.Split(" ") 

Dim numberDollars As String = fields(3).Substring(0) 

Dim nameDonated As String = fields(6).Substring(0) 

' outputs John donated 25 dollars 
TextBox1.Text = nameDonated & " donated " & numberDollars & " dollars." 
+1

您是否明白*为什么*您会得到“john”而不是全名? – Plutonix

+0

是的,字段6进入第六空间并从那里开始......然后子字符串0是下一个字的结尾。我需要代码来确定是否有2个单词或1个单词,具体取决于该人是否只输入了名或姓和名。我想我可以做一个nameDonated1和nameDonated2并且黯淡另一个语句把它们放在一起......但我希望有一个更好的方法比做这个 – Darryl

+1

NET中没有任何东西可以区分动词和名词之间的区别。此外,你的'SubString'没有做任何事情 – Plutonix

回答

1

由于它总是采用相同的格式“您从y收到x美元”,您可以根据该格式拆分字符串。

Dim myString As String = "You have received 25 dollars from John Doe" 
' split into {"You have received 25 dollars", "John Doe"} 
Dim mySplitString1 As String() = myString.Split(New String() {" from "}, 0) 
' and take the second item which has the name 
Dim donorName As String = mySplitString1(1) 
' then split the first item into {"You", "have", "received", "25", "dollars"} 
Dim mySplitString2 As String() = mySplitString1(0).Split(" ") 
' and take the fourth item which has the amount 
Dim dollarAmount As Single = Single.Parse(mySplitString2(3)) 

TextBox1.Text = String.Format("{0} donated {1:0} dollars", donorName, dollarAmount) 

有时最简单的答案是最好的。使用您的原始代码,将名称分配更改为

Dim nameDonated As String = fields(6) & If(fields.Length = 8, " " & fields(7), "") 
+0

'Dim nameDonated As String = fields(6)&If If(fields.Length = 8,“”&fields(7),“”)'too too – djv

+0

Dim nameDonated As String = fields(6)&If(fields.Length = 8,“”字段(7),“”)就像一场梦。非常感谢Verdolino帮助我。 :) – Darryl

相关问题