2012-04-16 20 views
2

配列の一致のメソッドを探しています。他の配列と配列を一致させる

ここでコードが

char[] normalText = new char[26] {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'}; 
char[] parsedText = new char[26] {'b', 'c', 'd', 'e', 'f', 'g', ...}; 

を示して、私は二つの配列を持っていると、私はプログラムで「ABC」を書き込む場合、それは 「BCD」に変わりますので、それらを一致させたいと、私は」このように、テキストパーサの方法を作ったveは:

 parsing = input.ToCharArray(); 
     foreach (char c in parsing) 
     { 
      throw new NotImplementedException(); 
     } 

しかし、私は、foreach文の後に、それらを一致させるために行う必要があり、クエリの種類を知りません。コード内でこれをどのように一致させるか分かっている場合は、ここに投稿してください、それはVERY2 APPRECIATEDとなります。

+0

「normalText」という2つの配列がありますか? –

+0

この「宿題」ですか? – cfedermann

+1

等しいかどうかを確認したいのですか?相手のサブセットであるかどうか確認したいですか? –

答えて

0

ここがあなたの望みです。 Array.IndexOf(oldText, s)を使用すると、古い配列の文字のインデックスを取得し、そのインデックスで新しい配列の値を取得できます。

string input="abc"; 
char[] oldText = new char[26] {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'}; 
char[] newText = new char[26] { 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z','a'}; 

char[] array = input.ToCharArray(); 
StringBuilder output= new StringBuilder(); 
foreach(char s in array) 
{ 
    output.Append(newText[Array.IndexOf(oldText, s)]); 
} 

Console.WriteLine(output.ToString()); // "bcd" 
2

私はこのようなものを使用したい:1翻訳:あなたは1のために作るためにこれらを使用するように

var input = "abc"; 
var parsing = input.ToCharArray(); 
var result = new StringBuilder(); 
var offset = (int)'a'; 
foreach (var c in parsing) { 
    var x = c - offset; 
    result.Append(parsedText[x]); 
} 
1

に見えます。

(すなわち:最も拡張可能)最高これを行う方法は、辞書で、おそらくです:その後、

Dictionary<char, char> dictionary = new Dictionary<char, char>(); 
dictionary.Add('a', 'b'); 
dictionary.Add('b', 'c'); 
dictionary.Add('c', 'd'); 
//... etc (can do this programmatically, also 

char newValue = dictionary['a']; 
Console.WriteLine(newValue.ToString()); // "b" 

のように。辞書を使うことで、あなたは何をしているのかに応じて非常に便利なリストの力を得ることができます。

0

これは次のようなものですが、あなたに最適な方法でフォーマットしてください。

char[] normalText = new char[26] {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'}; 
char[] dictionary = new char[26] {'z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y' };  

parsing = input.ToCharArray(); 
foreach (char c in parsing) 
     { 
      if(index(c,normalText)<= dictionary.Length) 
       Console.WriteLine(dictionary[index(c,normalText)]); 
     } 

int index(char lookFor, char[] lookIn) 
    { 
     for (int i = 0; i < lookIn.Length; i++) 
      { 
       if (lookIn[i] == lookFor) 
        return i; 
      } 
     return -1; 
    } 
関連する問題