2014-11-25 4 views
0

У меня есть строка с форматом:Разбивает строку на элементы массива строк

blockh-> 127.0.0.1 testlocal.de-> 127.0.0.1 testlocal2.com

Теперь мне нужно разделить элементы, лучший способ - это строковый массив, я думаю. Я должен был бы получить только эти элементы отделено:

127.0.0.5 somerandompage.de

127.0.0.1 anotherrandompage.com

Как разделить и фильтровать массив, чтобы получить только эти элементы ?

Использование .Filter() Метод не подходит для работы.

+0

Это не дубликат указанного вопроса. Речь идет не только о разделении, но и о фильтрации. –

ответ

0

Вы можете использовать метод Split().

var s = "testlocal->testlocal2"; 
var splitted = s.Split(new[] {"->"}, StringSplitOptions.RemoveEmptyEntries); //result splitted[0]=testlocal, splitted[1]=testlocal2 
+0

Я редактировал выше, содержимое не одно и тоже все время. Это переменная. – razoR

+1

@ Крис да, исправлено это :) –

2

Вы можете использовать метод Строка Split:

var st = "blockh->127.0.0.1 testlocal.de->127.0.0.1 testlocal2.com"; 
var result = st.Split(new [] { "->" }, StringSplitOptions.None); 

Вы можете достичь того же с Regex:

var result = Regex.Split(st, "->"); 

Как запиской @ Крис оба из них разделит строка в массив с 3 элементами:

  • blockh
  • 127.0.0.1 testlocal.de
  • 127.0.0.1 testlocal2.com

В случае, если вы хотите избавиться от blockh, вы можете сделать матч регулярного выражения, используя IP-адрес и доменное регулярное выражение:

var ip = new Regex(@"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b\s*(([\w][\w\-\.]*)\.)?([\w][\w\-]+)(\.([\w][\w\.]*))"); 
var result = ip.Matches(st).Cast<Match>() 
     .Select(m => m.Value) 
     .ToArray(); 

Это позволит получить только два элемента, содержащие IP-адреса.

+0

Возможно, стоит упомянуть, что вы получите «блок» в качестве первого элемента, который может быть или не быть желательным ... – Chris

+0

Правильно. Обновление моего ответа;) –

+0

Примером использования RegEx может служить массив из 2 полей, содержащих мои предпочтительные элементы? – razoR

0

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

Это описано подробно в этой статье MSDN: http://msdn.microsoft.com/en-us/library/ms228595.aspx

Для получения дополнительной информации о том, как регулярные выражения могут выглядеть эту страницу очень полезно: http://regexone.com/

+0

Мне не нужно «блокировать». RegEx перегружен, я думаю, любой простой способ без RegEx? – razoR

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