0

大家好我怎么能得到NGG - Acid

从这个字符串

"????log L 06/11/2012 - 06:45:28: \"NGG - Acid<5><STEAM_ID_PENDING><>\" connected, address \"46.49.70.30:27005\"\n\0"

我试过这个

int start = Data.ToString().IndexOf('"') + 1;
            int end = Data.ToString().IndexOf('<');
            return Data.ToString().Substring(start, end - start);

当用户名包含空格或符号时,这不起作用

谢谢

Update 此代码获取用户名,但有更好的解决方案:

if (Data.EndsWith("\"")) Data = Data.Substring(0, Data.Length - 1);
            int start = Data.IndexOf("\"");
            int end = Data.IndexOf("<");
            var val = Data.Substring(start + 1, end - 1 - start);
4

2 回答 2

1

您的比赛将在第 1 组

\\"(.*?)<

如果我们假设您想要的匹配在 \" 和 <

在 C# 中,这变成

var c = Regex.Match(@"""????log L 06/11/2012 - 06:45:28: \""NGG - Acid<5><STEAM_ID_PENDING><>\"" connected, address \""46.49.70.30:27005\\""\n\0"""
, @"\\""(.*?)<").Groups[1].Value;
于 2012-06-11T14:09:55.820 回答
1

如果你想使用正则表达式:

Match match = Regex.Match(Data, @"\\""(.+?)<\d+?><ST");

if (match.Success) {
    Console.WriteLine(match.Groups[1].Value);
}
于 2012-06-11T14:11:08.537 回答