2012-03-12 7 views
4

из отладчика в моей строки массивов я получаю этуНарезка массив/слэш


"/ мерседес-бенз/190-класс/1993 /" класс = "canonicalLink" данных QString =» ? к югу = седан "> 1993

Я хочу, чтобы разделить текст после каждого '/' и получить его в строке [], здесь мои усилия

Queue<string> see = new Queue<string>(); //char[] a = {'\n '}; 
     List<car_facts> car_fact_list = new List<car_facts>(); 
     string[] car_detail; 
     foreach (string s in car) 
     { 

      MatchCollection match = Regex.Matches(s, @"<a href=(.+?)</a>", 
      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); 
      } 

}

В car_detail [0] Я получаю "$ [ссылка]"> $ [название]

из этой строки "/ Mercedes-Benz/190-класс/1993 /" класс = "canonicalLink" данных QString = «суб = седан»> 1993

ответ

12

Это не понятно, почему вы используете двойной слэш здесь ...

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

должен работать нормально. (Обратите внимание, что прогностическая слэш не должны быть экранированы в C#). Например:

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

Выход:

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

пустые строки из-за передней и задней косой черты. Если вы хотите, чтобы избежать тех, вы можете использовать

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

Примечания:

  • car_facts является весьма нетрадиционным имя в C#. Обычно у вас есть что-то вроде CarFacts (или, возможно, только Car, CarInfo и т. Д.). Аналогично car_fact_list обычно будет carFactList или что-то подобное.

  • Этот код не делает то, что вы ожидаете его:

    key.Trim(); 
    

    Строки неизменны в .NET - так Trim() возвращает ссылку на новой строки, а не изменять содержимое существующих один. Вы можете:

    key = key.Trim(); 
    
  • Вы в настоящее время присвоения значения car_detail, но никогда не использовать его. Зачем?

  • Анализ HTML с использованием регулярных выражений - это действительно плохая идея в целом. Подумайте об использовании HTML Agility Pack или чего-нибудь подобного.

+0

Я уже пробовал, его не работает –

+0

@RobustRob: Он обязательно * будет * работать - я приведу короткий, но полный пример. Пожалуйста, укажите больше информации, чем «его не работает» (sic). Что он делает, по сравнению с тем, что вы ожидали? –

+0

Я получаю то же самое «$ [link]»> $ [title], вот что, я говорю вам эти результаты из значений в отладчике, я использую VS 2010 WPF C# app –

Смежные вопросы