2012-06-11 91 views
0

大家好,我怎麼可以從這個字符串正則表達式從字符串獲取名稱C#

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

我曾試圖得到NGG - Acid

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); 
+3

字符串中的哪一部分是用戶名? –

回答

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; 
+0

請看我對我的評論Khôi的評論 –

1

如果你想使用正則表達式:

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

if (match.Success) { 
    Console.WriteLine(match.Groups[1].Value); 
} 
+0

謝謝,但如果用戶名是酸<它只給酸或如果名稱是<酸的結果將是空的 –

+0

編輯我的正則表達式...但它總是很難解析這樣的日誌,因爲總有些情況下它不能正常工作。 –