0

我正在使用 IRC 协议,并且正在尝试解释服务器消息。例如,如果我得到以下字符串:

":USERNAME!~IP PRIVMSG #CHANNELNAME :MESSAGE"

如果我不知道变量:USERNAME、IP、CHANNELNAME 或 MESSAGE,如何使用 string.StartsWith?

我想做这样的事情:(我知道这不起作用)

if(MessageString.StartsWith(":*!~* PRIVMSG #*"))
4

4 回答 4

2

我不会使用 StartsWith。我建议通过例如将字符串拆分为标记来解析字符串。这样您就可以检查 PrivMsg 字符串是否包含在令牌列表中。

可能有已经准备好解析 IRC 消息的库。你检查过https://launchpad.net/ircdotnet吗?

于 2013-08-15T12:46:15.350 回答
1

您可以尝试使用正则表达式:

http://msdn.microsoft.com/en-us/library/az24scfc.aspx

  // Check this regular expression: 
  // I've tried to reconstruct it from wild card in the question 
  Regex regex = new Regex(@":.*\!~.* PRIVMSG \#.*");

  Match m = regex.Match(":USERNAME!~IP PRIVMSG #CHANNELNAME :MESSAGE");

  if (m.Success) {
    int startWith = m.Index;
    int length = m.Length;
    ...
  }
于 2013-08-15T12:52:40.300 回答
0

尝试这样的事情,使用Regex类。

var regex = new Regex(
    @":(?<userName>[^!]+)!~(?<ip>[^ ]+) PRIVMSG #(?<theRest>[\s\S]+)");
var match = regex.Match(MessageString);
if (match.Success)
{
    var userName = match.Groups["userName"].Value;
    var ip = match.Groups["ip"].Value;
    var theRest = match.Groups["theRest"].Value;

    // do whatever
}

我还将查看MSDN 页面以了解 .Net 中的正则表达式

于 2013-08-15T12:52:59.857 回答
-1

尝试在您不知道的单词之后使用分隔符,并从只包含消息的主要单词中解析一个字符串。

于 2013-08-15T12:48:04.683 回答