如何使用字符串.当我只有比较字符串的某些部分时启动With()

本文关键字:字符串 分时 些部 启动 With 比较 何使用 | 更新日期: 2023-09-27 18:27:42

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

":用户名!~IP privamsg#CHANNELNAME:MESSAGE"

我怎样才能用绳子。StartsWith如果我不知道变量:USERNAME、IP、CHANNELNAME或MESSAGE?

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

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

如何使用字符串.当我只有比较字符串的某些部分时启动With()

我不会使用StartsWith。我建议解析字符串,例如将其拆分为令牌。通过这种方式,您可以检查PrivMsg字符串是否包含在令牌列表中。

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

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

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;
    ...
  }

使用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中的正则表达式。

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

相关文章: