我有一个格式为的字符串:
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 :(得分: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个元素的数组:
如果您想摆脱阻塞,可以使用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/