我正在从文本框中提取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)。
我确信有一种更有效的方法可以做到这一点。 谢谢!
答案 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上阅读更多相关信息。