2011-08-09 64 views
0

我有一个逗号分隔的字符串,它指定了索引。然后我有一个逗号分隔的字符串,它具有所有的值。拆分并选择特定元素

EX:

string strIndexes = "5,6,8,15"; 
    string strData = "ab*bc*dd*ff*aa*ss*ee*mm*jj*ii*waa*jo*us*ue*ed*ws*ra"; 

有一种方法来拆分字符串strData是并仅选择其在索引5,6,8或15或将我到第一分割字符串然后循环中的元素通过阵列/列表,然后在由字符串strIndexes(即5,6,7,15在这个例子中)定义的索引建立与所述值的一个以上的阵列/列表

由于

回答

4

它相当简单:

var allValues = strData.Split('*') 
var selected = strIndexes.Split(',') 
         .Select(x => int.Parse(x)) 
         .Select(index => allValues[index]); 

您可以从该列表中(通过调用selected.ToList()),或者你可以遍历它。

0

Split(',');呼叫在所述第一串你会得到一串字符串,你可以按照这个数组ess按索引,你可以在第二个数组上做同样的事情。不需要循环数组列表。

2

它取决于字符串的长度。如果它相对较短(因此“拆分”中的任何数组都很小),那么只需使用最简单的方法即可; Split"*"并挑选你需要的元素。如果它非常大,那么可能像迭代器块,以避免创建一个大型数组(但随后...因为字符串已经很大,也许这不是一个巨大的开销)。 LINQ是不是一定你最好的办法在这里...

string[] data = strData.Split('*'); 
string[] result = Array.ConvertAll(strIndexes.Split(','), 
     key => data[int.Parse(key)]); 

这给["ss","ee","jj","ws"]