将字符串拆分为字符串数组的元素

时间:2014-11-25 12:28:48

标签: c# string arrays

我有一个格式为的字符串:

  

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()方法不能完成工作。

3 个答案:

答案 0 :(得分:2)

您可以使用字符串Split方法:

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

您可以使用正则表达式实现相同的目标:

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

作为来自@Chris的注释,这两个文章将把字符串拆分成一个包含3个元素的数组:

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

如果您想摆脱阻塞,可以使用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地址的两个元素。

答案 1 :(得分:0)

您可以使用字符串Split()方法来执行此操作。

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

答案 2 :(得分:0)

如果分割字符串的简单版本不适合您,则可能通过定义正则表达式并提取匹配项来提供最佳服务。

这篇MSDN文章中详细介绍了这一点:http://msdn.microsoft.com/en-us/library/ms228595.aspx

有关正则表达式如何显示的详细信息,此页面非常有用:http://regexone.com/