2011-08-09 63 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"]