2014-04-24 77 views
0

我有一個字符串列表,我需要選擇列表的某些部分來構造一個單獨的字符串。我有什麼是:我可以從列表中選擇單個項目嗎?

name,gender,haircolour,car; 
or 
John,Male,Brown,toyota; 

我也有一個單獨的文件,指出哪些部分,以及應該建立新的字符串的順序。

例如:Index = 0,3,1將打印John,toyota,Male1,2,0將打印Male,Brown,John

我嘗試了幾種方法來嘗試選擇我想要的項目的索引,但所有返回值的函數僅返回列表的內容,唯一返回給出的整數是Count(),我可以沒有看到有幫助。

我已經嘗試過並嘗試過,但是我所做的所有事情都讓自己越來越困惑。任何人都可以幫助建議一種方法來實現這一點?

+1

你究竟試過了什麼?請張貼一些代碼。 –

回答

0

你應該能夠做到列表[I],其中i是指數你需要的元素。這裏有一些例子:http://www.dotnetperls.com/list

+0

感謝您的鏈接,我不認爲你可以使用'list [i]',我認爲這隻適用於數組:) – Ben

0

如果我理解正確的問題,這樣的事情應該做的工作:

const string data = "John,Male,Brown,toyota"; 
const string order = "0,3,1"; 

string[] indexes = order.Split(','); 
string result = indexes.Aggregate("", (current, index) => current + data.Split(',')[int.Parse(index)] + ","); 
result = result.TrimEnd(','); 

如果你的字符串數據用分號​​3210,因爲你的問題可能表明結束,然後換行到這:

string result = indexes.Aggregate("", (current, index) => current + data.Split(',')[int.Parse(index)].TrimEnd(';') + ","); 

注意此解決方案不檢查以確保給定的索引存在於給定的數據字符串中。要添加一個檢查,確保了指數不越過數組邊界,做這樣的事情,而不是:

string result = indexes.Where(z => int.Parse(z) < data.Split(',').Length).Aggregate("", (current, index) => current + data.Split(',')[int.Parse(index)].TrimEnd(';') + ","); 
0
 List<string> list = new List<string> { "John", "Male", "Brown", "toyota" }; 
     List<int> indexList = new List<int> { 0, 3, 1 }; 
     List<string> resultList = new List<string>(); 
     indexList.ForEach(i => resultList.Add(list[i])); 
相關問題