2017-02-18 11 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");など)。

次に、それを使用する方法の1つは、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

関連する問題