2014-04-24 18 views
0

мне нужно, чтобы получить только первое слово, после указанной строки как так (псевдо):VB.net получить первое слово после указанной строки

my_string = "Hello Mr. John, how are you today?" 
my_search_string = "are" 
result = "you" 

Я пытался сделать это с помощью следующий подход, но я получаю остальную строку после моей «ключевой» строки и ни одного слова.

Dim search_string As String = "key" 
    Dim x As Integer = InStr(Textbox1.text, search_string) 

    Dim word_after_key As String = Textbox1.text.Substring(x + search_string.Length - 1) 
+3

Psst: используйте 'String.IndexOf' вместо' InStr'. – Ryan

+0

Вам нужно найти следующую границу слова после найденного вами индекса. Это может быть либо пробел, любой знак пунктуации, либо то, что вы его определяете. –

ответ

2

Попробуйте это:

Dim str = "Hello Mr. John, how are you today?" 
Dim key = " are " 
Dim i = str.IndexOf(key) 
If i <> -1 Then 
    i += key.Length 
    Dim j = str.IndexOf(" ", i) 
    If j <> -1 Then 
     Dim result = str.Substring(i, j - i) 
    End If 
End If 

Или это возможно:

Dim str = "Hello Mr. John, how are you today?" 
Dim key = "are" 
Dim words = str.Split(" "C) 
Dim i = Array.IndexOf(words, key) 
If i <> -1 AndAlso i <> words.Length - 1 Then 
    Dim result = words(i + 1) 
End If 
+0

Второе решение довольно круто! - +1 –

0

Это тоже работает.

Dim my_string as String = "Hello Mr. John, how are you today?" 
Dim SearchString As String = "are" 
Dim StartP As Integer = InStr(my_string, SearchString) + Len(SearchString) + 1 
' to account for the space 

If StartP > 0 Then 
    Dim EndP As Integer = InStr(StartP, my_string, " ") 
    MsgBox(Mid(my_string, StartP, EndP - StartP)) 
End If 
Смежные вопросы