2017-02-18 252 views
0

我需要與其他陣列
的元素來取代我數組的匹配元素我寫這樣的代碼:用其他字符串數組替換字符串數組?

string[] replace(string[] input) 
    { 
     for (int i = 0; i < input.Length; i++) 
     { 
      switch (input[i]) 
      { 
       case "a": 
        input[i] = "11"; 
        break; 
       case "b": 
        input[i] = "22"; 
        break; 
       case "c": 
        input[i] = "33"; 
        break; 
       default: 
        input[i] = "??"; 
        break; 
      } 
     } 
      return input; 
    } 

,但你可以給我這個工作更好的方法?

+0

你能更清楚嗎?你究竟想問什麼?你面對什麼問題? –

+0

輸入是否只包含來自a-z的字符? –

+0

請記住,如果您按照您的方式更改了方法中的'input'數組,您的原始數組也將被更改,因爲數組是引用類型。 –

回答

0

您可以定義一個從源映射到目標元素的字典。根據您發佈的樣本,可以使用類似Dictionary <string, string> mappingsDictionary;的樣本。

爲了定義映射,您可以添加由原始元素和一個字符串組成的適當對,將其替換爲結果數組,如mappingsDictionary.Add ("a", "11");

然後,使用它的方法之一就是呼叫var resultArray = myOriginalArray.Select(i => { string s; return mappingsDictionary.TryGetValue(i, out s) ? s : i; }).ToArray();

如果輸入和輸出數組中的元素都是字符串,則也可以使用StringDictionary

+0

如果在字典中找不到密鑰,怎麼能返回一些默認值呢? – Tavakkoli

+1

如果在字典中找不到特定鍵,TryGetValue(...)方法返回false。在我的回答中,代碼嘗試獲取鍵「i」的值,並返回「i」本身的值(如果它在字典中找不到)。 –

+0

謝謝,mappingsDictionary.TryGetValue(i,out s)? s:「0」; })。ToArray(); – Tavakkoli