字符串分割到一个字符串数组的元素
我有与格式的字符串:字符串分割到一个字符串数组的元素
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()方法不适用于作业。
您可以使用字符串Split()
方法来做到这一点。
var s = "testlocal->testlocal2";
var splitted = s.Split(new[] {"->"}, StringSplitOptions.RemoveEmptyEntries); //result splitted[0]=testlocal, splitted[1]=testlocal2
我上面编辑过,内容不一直都是一样的。它是可变的。 – razoR 2014-11-25 12:33:01
@Chris是的,修复它:) – 2014-11-25 12:35:40
您可以使用字符串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, "->");
由于从@克里斯记这两个会分裂串入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地址的两个元素。
如果用于分割字符串的较简单版本不适合您,那么您可能最好通过定义正则表达式并提取匹配来提供最佳服务。即详细MSDN文章中描述
:http://msdn.microsoft.com/en-us/library/ms228595.aspx
有关正则表达式怎么看待这个页的信息是非常有帮助的:http://regexone.com/
我不需要得到“blockh”。 RegEx超载我想,没有RegEx的任何更简单的方法? – razoR 2014-11-25 12:40:25
这不是提到的问题的副本。这不仅是关于分裂,而且关于过滤。 – 2014-11-25 14:00:13