将字符串解密为数字值

时间:2013-09-12 16:30:02

标签: c#

  

我有我的代码将字符串解密为数字,但我有结果   每次“-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;
 }

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

在第

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

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

将此行更改为

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

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

答案 2 :(得分:0)

替换

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

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