C# 三段式分裂弦

C# 三段式分裂弦,c#,string,split,substring,C#,String,Split,Substring,大家好我几个小时前问过这个问题 现在我有一个难题。试图从该字符串中获取Acid Player和m249 L 02/28/2012 - 06:14:22: "Acid<1><VALVE_ID_PENDING><CT>" killed "Player<2><VALVE_ID_PENDING><TERRORIST>" with "m249" 是否可以同时获取播放器名称和最后一个字符串m249 坦克应该非常容易解析。我认

大家好我几个小时前问过这个问题

现在我有一个难题。试图从该字符串中获取Acid Player和m249

    L 02/28/2012 - 06:14:22: "Acid<1><VALVE_ID_PENDING><CT>" 
killed "Player<2><VALVE_ID_PENDING><TERRORIST>" with "m249"
是否可以同时获取播放器名称和最后一个字符串m249


坦克应该非常容易解析。我认出是CS。请在此处查看阀门的文档:

更新:

如果您不习惯使用正则表达式,此实现也将执行您想要的操作,并且与您尝试执行的操作一致:

    public void Parse(string killLog)
    {
        string[] parts = killLog.Split(new[] { " killed ", " with " }, StringSplitOptions.None);
        string player1 = parts[0].Substring(1, parts[0].IndexOf('<') - 1);
        string player2 = parts[1].Substring(1, parts[1].IndexOf('<') - 1);
        string weapon = parts[2].Replace("\"", "");
    }

就我个人而言,我会使用正则表达式。

应该非常容易解析。我认出是CS。请在此处查看阀门的文档:

更新:

如果您不习惯使用正则表达式,此实现也将执行您想要的操作,并且与您尝试执行的操作一致:

    public void Parse(string killLog)
    {
        string[] parts = killLog.Split(new[] { " killed ", " with " }, StringSplitOptions.None);
        string player1 = parts[0].Substring(1, parts[0].IndexOf('<') - 1);
        string player2 = parts[1].Substring(1, parts[1].IndexOf('<') - 1);
        string weapon = parts[2].Replace("\"", "");
    }

就个人而言,我会使用正则表达式。

这里有一个简单的例子,说明如何使用正则表达式。根据字符串的变化程度,此字符串可能适用于您。我假设引号和它们之间的文本是一致的。您需要在顶部添加以下行:

使用System.Text.RegularExpressions

代码:

正则表达式的语法细分如下:

[^\]+

意思是,直到我们得到一个双引号

\

表示将引号作为字符串的下一部分,因为上一个术语将我们带到它,但不会超过它


[^下面是一个简单的示例,说明如何使用正则表达式。根据字符串的变化程度,这一行可能适合您。我假设引号以及引号之间的文本是一致的。您需要在顶部添加这一行:

使用System.Text.RegularExpressions

代码:

正则表达式的语法细分如下:

[^\]+

意思是,直到我们得到一个双引号

\

表示将引号作为字符串的下一部分,因为上一个术语将我们带到它,但不会超过它


[^好的,谢谢你,效果很好。但是你从哪里得到这个正则表达式的?你知道吗,或者它是由计算机生成的?我会用正则表达式的更多细节更新答案。我是根据你的字符串编写的。好的,谢谢你,效果很好。但是你从哪里得到这个正则表达式的?你知道吗,或者它是由计算机生成的?我会更新答案关于正则表达式的更多细节。我是根据你的字符串写的。
    public void Parse(string killLog)
    {
        string[] parts = killLog.Split(new[] { " killed ", " with " }, StringSplitOptions.None);
        string player1 = parts[0].Substring(1, parts[0].IndexOf('<') - 1);
        string player2 = parts[1].Substring(1, parts[1].IndexOf('<') - 1);
        string weapon = parts[2].Replace("\"", "");
    }
string input = "L 02/28/2012 - 06:14:22: \"Acid<1><VALVE_ID_PENDING><CT>\" killed \"Player<2><VALVE_ID_PENDING><TERRORIST>\" with \"m249\"";
Regex reg = new Regex("[^\"]+\"([^<]+)<[^\"]+\" killed \"([A-Za-z0-9]+)[^\"]+\" with \"([A-Za-z0-9]+)\"");
Match m = reg.Match(input);
if (m.Success)
{
    string player1 = m.Groups[1].ToString();
    string player2 = m.Groups[2].ToString();
    string weapon = m.Groups[3].ToString();
}