需要在'@'之后提取字符串&在''(空白)多次之前

时间:2016-01-08 18:06:07

标签: vb.net string

我正在从文本框中提取twitter / facebook样式提及。 到目前为止,这是我的代码:

  Dim a As String = TextBox1.Text + " "
        Dim b As Char() = a.ToCharArray
        Dim c As String
        Dim l As Integer = TextBox1.Text.Length
        Dim temp As Integer = 0
        Dim nex As Integer = a.IndexOf(" ")
        For i = 0 To l - 1

            If b(i) = "@" Then
                temp = 1
            ElseIf temp = 1 Then
              temp = 2
            End If

            If temp = 2 Then

                c = a.Substring(i, nex).Trim() 'nex needs be replaced with next space on 2nd or nth loop
                MsgBox(c)
                temp = 0
                nex = a.IndexOf(" ") + nex
            End If

        Next
  

如果输入的文本是@one @twwo @three,现在这很有效。 (如果   下一个字符串的长度更长。)但在其他地方不起作用。

此外,两个@mentions之间可能会有内容,所以我不愿意改变b(i)。

我确信有一种更有效的方法可以做到这一点。 谢谢!

1 个答案:

答案 0 :(得分:1)

这是document.body .appendChild(document.createElement('p')) .appendChild(document.createElement('span')) .appendChild(document.createElement('ul')) .appendChild(document.createElement('li')) .appendChild(document.createTextNode('test'))的工作。模式regex应该做得很好。

@\w+

将打印出For Each m As Match In Regex.Matches("@testing this is a @test", "@\w+") Console.WriteLine(m.Value) Next @testing

这种模式基本上意味着“查找以'@'开头的所有内容,后跟一个或多个'单词字符'。”

正则表达式是一种非常强大的搜索字符串工具,您可以在MSDN上阅读更多相关信息。