2017-05-02 1 views
0

Ich habe eine Zeichenfolge [Es wird nicht nur auf das GUID-Muster in einer Zeichenfolge, ich verwende HtmlAgilityPack zu analysieren und konvertieren sie in HTML-Knoten, dann muss ich diese Guid nur wenn extrahieren der Knoten enthält, ausziehbare id und type = \ "Click \" value = 'upload, der Einfachheit halber ich alle Details]Spezielle Multi-String-Zeichenfolgen C#

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

ich die GUID reduziert aus ihm extrahieren möchten. Es ist Teil der HTML-Analyse. Also habe ich den unten beschriebenen Weg benutzt und versuchte die Extraktion und scheint nicht zu funktionieren. Wie stelle ich "\" "?" Und "=" dar? Ich habe "as \" und \ as \ für Literale verwendet. Irgendein Vorschlag?

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

Mögliches Duplikat [Regular Expression eine Guid gefolgt von einer Nummer zur Identifizierung ] (http://stackoverflow.com/questions/29138593/regular-expression-to-identify-a-guid-followed-by-a-number) –

+0

es ist wie xml try t o Verwenden Sie XML-Reader –

+0

... oder [C# Regex für Guid] (http://stackoverflow.com/a/11040993/205233) - nur die Suche nach der GUID wird die Dinge viel einfacher. – Filburt

Antwort

0

Wie wäre es mit Regex

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

Ich schlage vor, mit regulären AusdrückenGuid s entsprechen:

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();