2012-08-16 107 views
0

我有一个字符串:字符串数组

id0:xxxxx:id0-value:xxxxx:id1:xxxxxxxx:id1-value:xxxxx:id3:xxxxxxxx:id3-value:xxx 

我只需要从字符串到数组IDX-value的值。

我该如何实现它?

+2

家庭作业 – dthorpe 2012-08-16 03:27:40

+0

尝试新鲜事物或完全? – nunespascal 2012-08-16 03:27:42

+0

一些正则表达式的好地方!一个字...匹配集合 – CoderMarkus 2012-08-16 03:28:48

回答

2

最简单的方法,该值是在位置(4倍 - 1):

var list = input.Split(':'); 
var outputs = new List<string>(); 

for (int index = 0; index < list.Count(); index++) 
{ 
    if (index % 4 == 3) 
     outputs.Add(list.ElementAt(index)); 
} 
+0

该字符串可以是动态的,超过3个值。 – Alvin 2012-08-16 04:38:01

+0

让我看看例子 – 2012-08-16 04:39:18

+0

它可以ID0:XXXXX:ID0值:XXXXX:ID1:XXXXXXXX:ID1值:XXXXX:ID3:XXXXXXXX:ID3值:XXX ,或ID0:XXXXX:ID0值:XXXXX: id1:xxxxxxxx:id1-value:xxxxx:id3:xxxxxxxx:id3-value:xxx:id4:xxxxxxxx:id4-value:xxx – Alvin 2012-08-16 04:56:08

1

使用正则表达式(一种正则表达式:x之后出现的正则表达式)进行拆分,然后使用冒号:进行拆分,并使用第一个索引作为Dictionary Key和第二个索引作为Dictionary值。

+0

我不推荐RegEx的原因是因为数据看起来是在一个设定的模式中RegEx编译和使用是昂贵的bo相比于只分割字符串而言,CPU和内存方面更为出色。如果数据不是清晰的模式,那么正则表达式就是要走的路。 – 2012-08-16 03:37:53

2

使用String.Split()

http://msdn.microsoft.com/en-us/library/system.string.split.aspx

String myString = "id0:xxxxx:id0-value:xxxxx:id1:xxxxxxxx:id1-value:xxxxx:id3:xxxxxxxx:id3-value:xxx"; 
String[] tokens = myString.Split(new Char[] {':'}); 

令牌数组将包含{ “ID0”, “XXXXX”, “ID0-值”, “XXXXX”, “ID1”, “xxxxxxxx”,“id1-value”,“xxxxx”,“id3”,“xxxxxxxx”,“d3-value”,“xxx”}

第二种可能性是使用String.IndexOf()和String。子串()。

http://msdn.microsoft.com/en-us/library/5xkyx09y http://msdn.microsoft.com/en-us/library/aka44szs

诠释开始= 0; ArrayList令牌; ((start = myString.IndexOf(“ - value:”,start))> -1){ ArrayList.Add(myString.Substring(start + 6,myString.IndexOf(“:”,start + 7); 启动+ = 6; //跳转过去我们刚发现 }