开发者

Split and select specific elements

I have a comma separated string which specifies the indexes. Then I have one more comma separated string which has all the values.

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";

Is there a way to split the string strData and select only the elements which are at index 5, 6, 8 or 15. Or will I have to split the string first then loop through the array/list and then build one more array/list with the values at indexes defin开发者_StackOverflowed by string strIndexes (i.e. 5, 6,7,15 in this example)

Thanks


It's reasonably simple:

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

You can create a list from that (by calling selected.ToList()) or you can just iterate over it.


It depends a bit on the length of the string. If it is relatively short (and therefore any array from "Split" is small) then just use the simplest approach that works; Split on "*" and pick the elements you need. If it is significantly large, then maybe something like an iterator block to avoid having to create a large array (but then... since the string is already large maybe this isn't a huge overhead). LINQ isn't necessarily your best approach here...

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

which gives ["ss","ee","jj","ws"].


call Split(','); on the first string and you get an array of strings, that array you can access by index and the same you can do on the second array. No need to loop array lists.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜