我有與格式的字符串:字符串分割到一個字符串數組的元素
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()方法不適用於作業。
我有與格式的字符串:字符串分割到一個字符串數組的元素
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的,您可以使用一個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