C# 三段式分裂弦
大家好我几个小时前问过这个问题 现在我有一个难题。试图从该字符串中获取Acid Player和m249C# 三段式分裂弦,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 坦克应该非常容易解析。我认
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();
}