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

спасибо, сопоставленияDictionary.TryGetValue (i, out s)? s: «0»; }). ToArray(); – Tavakkoli