2015-06-19 3 views
0

Я изо всех сил пытаюсь выяснить, как я могу это достичь. Вот содержание:Разделительные строки с регулярным выражением

"#1 Single" (2006) {Window Shopping (#1.2)} UK:29 January 2006

"The Wright Stuff" (2000) {(#15.76)} Germany:25 April 2011

Fever (2014/I) Brazil:26 February 2015 (Cinequest Film Festival)

Fever (2014/II) USA:June 2014

Выше вариацией разных строк, у меня есть все эти строки в List<string> и я только хотите первую часть, например The Wright Stuff и последняя часть Germany25 April 2011. Так что, если у меня был Dictionary<int,List<string>> это будет выглядеть следующим образом:

new Dictionary<int, List<string>> { 
    { 
     1, new List<string>() 
      { 
       "The Wright Stuff", 
       "Germany", 
       "25 April 2011" 
      } 
     } 
    }; 

выше, что я хочу, чтобы мой результат будет (Не беспокойтесь о ключе словаря, это GUID в моем фактическом применении).

Но если строка имеет дополнительный бит в конце, как Fever (2014/I) Brazil:26 February 2015 (Cinequest Film Festival), то я хочу добавить (Cinequest Film Festival).

Может ли кто-нибудь помочь мне в этом?

+0

Вы пытались String.split (новый [] { "", ":"}, StringSplitOptions.RemoveEmptyEntries)? Таким образом, вы можете разделить левую и правую части, разделенные многими пробелами, и части, разделенные двоеточиями. Вам нужно будет обрезать результаты, но я думаю, что это близко к тому, что вы хотите. Даже без RegEx – LInsoDeTeh

+0

Это хорошая точка, но если я разделяю ее на '' '', она разделит каждое слово. –

+0

это вряд ли видно в комментариях, но я добавил два пробела в раскол, поэтому вы должны делиться между частями, а не между словами. Приятная вещь этой перегрузки Split() заключается в том, что вы можете предоставить строки, а не только простые символы. – LInsoDeTeh

ответ

1

без использования регулярных выражений, это может быть решен следующим образом (как описано в комментариях):

var theListOfString = yourInputString.Split(new[] { " ", ":" }, StringSplitOptions.RemoveEmptyEntries).Select(p => p.Trim()).ToList(); 
theListOfString[0] = theListOfString[0].Substring(0, theListOfString[0].IndexOf("(") - 1); 
Смежные вопросы