Dividindo o array com / slash

do depurador na minha cadeia de matrizes eu estou recebendo este


“/ mercedes-benz / class 190/1993 /” class = “canonicalLink” data-qstring = “? sub = sedan”> 1993

Desejo dividir o texto após cada ‘/’ e obtê-lo na string [], aqui está o meu esforço

Queue see = new Queue(); //char[] a = {'\n '}; List car_fact_list = new List(); string[] car_detail; foreach (string s in car) { MatchCollection match = Regex.Matches(s, @"<a href=https://stackoverflow.com/questions/9673817/splitting-the-array-with-slash/(.+?)", RegexOptions.IgnoreCase); // Here we check the Match instance. foreach(Match mm in match) { // Finally, we get the Group value and display it. string key = mm.Groups[1].Value; //key.TrimStart('"'); //key.Trim('"'); key.Trim(); **car_detail = Regex.Split(key, "//");**//I tried with strin.Split as well and tried many combination of seperator , see.Enqueue(key); } 

}

Em car_detail [0] eu recebo este “$ [link]”> $ [title]

desta cadeia “/ mercedes-benz / class 190/1993 /” class = “canonicalLink” data-qstring = “? sub = sedan”> 1993

Não está claro por que você está usando uma barra dupla aqui …

 string[] details = key.Split('/'); 

deve funcionar bem. (Observe que barras não precisam ter escape em C #.) Por exemplo:

 using System; class Test { static void Main() { string text = "/mercedes-benz/190-class/1993/"; string[] bits = text.Split('/'); foreach (string bit in bits) { Console.WriteLine("'{0}'", bit); } } } 

Saída:

 '' 'mercedes-benz' '190-class' '1993' '' 

As seqüências vazias são devido às barras iniciais e finais. Se você quiser evitar isso, você pode usar

 string[] details = key.Split(new[] {'/'}, StringSplitOptions.RemoveEmptyEntries); 

Notas:

  • car_facts é um nome altamente não convencional em C #. Normalmente você teria algo como CarFacts (ou potencialmente apenas Car , CarInfo etc). Da mesma forma, car_fact_list normalmente seria carFactList ou algo similar.

  • Este código não faz o que você espera:

     key.Trim(); 

    As strings são imutáveis ​​no .NET – então Trim() retorna uma referência a uma nova string em vez de alterar o conteúdo da existente. Você pode querer:

     key = key.Trim(); 
  • Atualmente, você atribui um valor a car_detail mas nunca o usa. Por quê?

  • Analisar HTML usando expressões regulares é uma idéia muito ruim em geral. Considere usar o HTML Agility Pack ou algo semelhante.