2017-05-02 77 views
0

我有一個字符串[它不只是看在字符串中的GUID模式,我使用HtmlAgilityPack解析,並將其轉換到htmlnodes,那我也只有在提取該GUID所述節點包含,可提取的標識和類型= \「ClickButton \」值='上傳,爲簡單起見我降低所有的細節]特別多字符串分割C#

"\r\n      <extractable id=\"00000000-0000-0000-0000-000000000000\" class=\"myButtonC\" type=\"ClickButton\" value='upload'>\r\n     " 

我要提取的GUID出來。它是HTML解析的一部分。所以我用下面的方式嘗試提取,似乎不工作。我如何表示「\」「?和」= \「」?我用「as \」和\作爲文字。任何建議?

private static string ExtractId(string str)  
{ 
    string eId = string.Empty; 
    string[] arrys = str.Split(new string[] {@"\"" "}, StringSplitOptions.None); 
    foreach (string[] lists in arrys.Select(t => t.Split(new string[] {@"=\"""}, StringSplitOptions.None))) 
    { 
     for (int j = 0; j < lists.Length; j++) 
     { 
      if (lists[j].Contains("extractable id")) 
      { 
       eId = lists[j + 1]; 
      } 
     } 
    } 
    return eId; 
} 
+0

[正則表達式來標識一個GUID後的一些可能的複製](http://stackoverflow.com/questions/29138593/regular-expression-to-identify-a-guid-followed-by-a-number) –

+0

其如XML試噸o使用XML讀者 –

+0

...或[C#正則表達式的Guid](http://stackoverflow.com/a/11040993/205233) - 只是爲了尋找GUID會使事情比較容易的方式。 – Filburt

回答

0

如何使用正則表達式

string pattern = @"([a-z0-9]{8}[-][a-z0-9]{4}[-][a-z0-9]{4}[-][a-z0-9]{4}[-][a-z0-9]{12})"; 

MatchCollection mc = Regex.Matches(your_string, pattern); 

foreach (var sGUID in mc) 
{ 
    // do what you want 
} 
3

我建議使用正則表達式匹配Guid S:

string source = "\r\n <extractable id=\"00000000-0000-0000-0000-000000000000\" class=\"myButtonC\" type=\"ClickButton\" value='upload'>\r\n"; 

Guid[] result = Regex 
    .Matches(
    source, 
    "[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}") 
    .OfType<Match>() 
    .Select(match => new Guid(match.Value)) 
    .ToArray();