2011-01-08 11 views
11

Mam wiele dopasowań Regex. Jak mogę umieścić je w tablicy i zadzwonić do nich indywidualnie, na przykład ID[0] ID[1]?Jak umieścić Regex.Matches w tablicy?

string value = ("{\"ID\":\"([A-Za-z0-9_., ]+)\","); 
string ID = Regex.Matches(textt, @value);` 
+1

Ostatnio usłyszałem 'Mecze()' zwróciło kolekcję, a nie ciąg. – BoltClock

Odpowiedz

25

Można to zrobić już od MatchCollection ma int indexer, który pozwala uzyskać dostęp do wyników przez indeks. To jest całkowicie poprawny:

MatchCollection matches = Regex.Matches(textt, @value); 
Match firstMatch = matches[0]; 

Ale jeśli naprawdę chcesz umieścić wyniki do tablicy, można zrobić:

Match[] matches = Regex.Matches(textt, @value) 
         .Cast<Match>() 
         .ToArray(); 
+0

Czy możesz zamieścić równoważnik vb dla drugiego fragmentu kodu powyżej? – Smith

+1

@Smith Wypróbuj: Dopasuj() jako Dopasowanie = Regex.Matches (textt, wartość @) .Cast (z dopasowania)(). ToArray() – Crag

+0

używam .net 2.0, ten rzut nie jest obsługiwany – Smith

0

inną metodę

string value = ("{\"ID\":\"([A-Za-z0-9_., ]+)\","); 
    MatchCollection match = Regex.Matches(textt, @value); 

    string[] ID = new string[match.Count]; 
    for (int i = 0; i < match.Length; i++) 
    { 
    ID[i] = match[i].Groups[1].Value; // (Index 1 is the first group) 
    } 
+0

Zbyt skomplikowany przez dodatkową tablicę. Zobacz moją odpowiedź. – vapcguy

1

albo to combo z następujących ostatnie 2 może być nieco łatwiejsze do opanowania ... MatchCollection może być użyty jak tablica bezpośrednio - nie ma potrzeby stosowania dodatkowej tablicy:

string value = ("{\"ID\":\"([A-Za-z0-9_., ]+)\","); 
MatchCollection matches = Regex.Matches(textt, @value); 
for (int i = 0; i < matches.Count; i++) 
{ 
    Response.Write(matches[i].ToString()); 
} 
Powiązane problemy