2017-02-18 173 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