【问题标题】:How can I get the nickname and message from raw IRC data in vb.net如何从 vb.net 中的原始 IRC 数据中获取昵称和消息
【发布时间】:2010-06-02 12:13:33
【问题描述】:

嗯,基本上我有一个连接到 IRC 的 vb.net 脚本,我正在努力使其成为一个基本的聊天系统,但我遇到了一个问题。

假设我收到了这个:

:nickname!name@tw-32151D9B.hsd1.vt.comcast.net PRIVMSG #channel :message

我想获取特定信息输出给用户。

我要抢nicknamemessage

我该怎么做?

我想过使用正则表达式,但我不知道如何让正则表达式抓取message,因为它后面没有任何内容。

【问题讨论】:

  • 您是否尝试过我在下面发布的代码,它可以从 IRC 消息中解析出您想要的信息?

标签: vb.net regex irc


【解决方案1】:

我喜欢 IRC。假设您的原始数据位于变量 strData 中,以下代码将执行您想要的操作。

Dim strNickName As String = String.Empty
Dim strMessage As String = String.Empty

Dim intToMessage As Integer = 0
Dim intParse As Integer = 0

intParse = InStr(strData, "!")
strNickName = Mid(strData, 2, (intStart - 2))

intToMessage = InStr(strData, "PRIVMSG #")
intParse = InStr(Mid(strData, intToMessage, (Len(strData) - intToMessage)), ":")
strMessage = Mid(strData, (intToMessage + intStart), (Len(strData) - (intToMessage + intStart - 1)))

【讨论】:

    【解决方案2】:

    您可以使用 RegEx 获取第一个 : 和 ! 之间的所有内容

    (?<=:).*?(?=!)
    

    然后查找最后一个 #channel : 和行尾之间的所有内容

    (?<=#channel :).*?(?=$)
    

    这很简单,但应考虑到有人可能在消息中使用分号 (:)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-23
      • 2019-12-12
      • 2014-02-13
      • 1970-01-01
      • 2021-10-31
      • 2014-04-23
      • 1970-01-01
      • 2014-09-17
      相关资源
      最近更新 更多