-4

我有我的代码将字符串解密为数字,但每次“-1-1-1”我都有结果

protected void submit_Click(object sender, EventArgs e)
{
    decryptScore(txtscore.Text);
}



public string decryptScore(string s)
{
     string[] firstDigitArray = { "f85au", "kt50e", "cmt5s", "v5072", "fc5i3", "56f7l", "7gj81", "yn90y", "5o3ko", "ntakn" };
     string[] secondDigitArray = { "hkym6", "xj97c", "54v6q", "nawf9", "9e1gp", "9gww9", "5oj5p", "0ba5t", "yizld", "bt064" };
     string[] thirdDigitArray = { "uku91", "rn2k4", "uuq78", "nkurt", "8kxqs", "9p7kc", "hd8x6", "57b6o", "7iucu", "do6bq" };
     string[] fourthDigitArray = { "0hdro", "0wqrc", "wa5ny", "857mg", "3f7ro", "kerph", "0mhw1", "tpb8f", "8rho3", "4hc11" };

     string[][] digitsArray = {firstDigitArray, secondDigitArray, thirdDigitArray, fourthDigitArray};

     string decryptedScore = "";
     int scorelength = s.Length / 5;

     for (int i = 0; i < scorelength; i++)
     {
         string d = s.Substring(i * 5, 5);
         decryptedScore += (digitsArray[i][i].IndexOf(d));
     }
     score.Text = decryptedScore;
     return decryptedScore;
 }
4

3 回答 3

1
public string decryptScore(string s)
{
    var firstDigitArray = new List<string>{ "f85au", "kt50e", "cmt5s", "v5072", "fc5i3", "56f7l", "7gj81", "yn90y", "5o3ko", "ntakn" };
    var secondDigitArray = new List<string> { "hkym6", "xj97c", "54v6q", "nawf9", "9e1gp", "9gww9", "5oj5p", "0ba5t", "yizld", "bt064" };
    var thirdDigitArray = new List<string> { "uku91", "rn2k4", "uuq78", "nkurt", "8kxqs", "9p7kc", "hd8x6", "57b6o", "7iucu", "do6bq" };
    var fourthDigitArray = new List<string> { "0hdro", "0wqrc", "wa5ny", "857mg", "3f7ro", "kerph", "0mhw1", "tpb8f", "8rho3", "4hc11" };

    var digitsArray = new List<List<string>>{ firstDigitArray, secondDigitArray, thirdDigitArray, fourthDigitArray };

    string decryptedScore = "";
    int scorelength = s.Length / 5;

    for (int i = 0; i < scorelength; i++)
    {
        string d = s.Substring(i * 5, 5);
        decryptedScore += (digitsArray[i].FindIndex(x=>x==d));
    }

    return decryptedScore;

}

PS:不要忘记如果scorelength大于或等于 4 你会得到一个例外(因为你只有 4 digitArrays

于 2013-09-12T16:58:24.800 回答
0

在行

decryptedScore += (digitsArray[i][i].IndexOf(d));

您正在搜索一个字符串 单个字符串的值。您需要搜索数组。

将此行更改为

decryptedScore += Array.IndexOf(digitsArray[i], d);

这将在数​​组中搜索特定值并返回它的索引。结果,您将获得所需的号码。

于 2013-09-12T17:01:07.863 回答
0

代替

decryptedScore += (digitsArray[i][i].IndexOf(d));

decryptedScore += Array.IndexOf(digitsArray[i], d);

于 2013-09-12T17:02:20.900 回答