将PHP转换为C#-如何处理数组?

将PHP转换为C#-如何处理数组?,c#,php,C#,Php,我需要将几行PHP代码转换为C#。然而,我只有基本的知识,我还不太了解数组 下面是我需要转换为C的代码: 函数解码字符($c、$a1、$a2) { $result=$c; 对于($j=0;$j

我需要将几行PHP代码转换为C#。然而,我只有基本的知识,我还不太了解数组

下面是我需要转换为C的代码:

函数解码字符($c、$a1、$a2)
{
$result=$c;
对于($j=0;$j
以下是到目前为止我得到的信息:

public string decode_str(string s)
{
       string[] a1 = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "W", "G", "X", "M", "H", "R", "U", "Z", "I", "D", "=", "N", "Q", "V", "B", "L" };
       string[] a2 = { "b", "z", "a", "c", "l", "m", "e", "p", "s", "J", "x", "d", "f", "t", "i", "o", "Y", "k", "n", "g", "r", "y", "T", "w", "u", "v" };

       string result = "";
       for (int i = 0; i < s.Length; i++)
       {
           result += decode_char(s[i], a1, a2);
       }

           return result;
}
公共字符串解码\u str(字符串s)
{
字符串[]a1={“0”、“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“W”、“G”、“X”、“M”、“H”、“R”、“U”、“Z”、“I”、“D”、“=”、“N”、“Q”、“V”、“B”、“L”};
字符串[]a2={“b”,“z”,“a”,“c”,“l”,“m”,“e”,“p”,“s”,“J”,“x”,“d”,“f”,“t”,“i”,“o”,“Y”,“k”,“n”,“g”,“r”,“Y”,“t”,“w”,“u”,“v”};
字符串结果=”;
对于(int i=0;i
有人能帮忙转换
解码字符吗


感谢您快速的回答。我自己已经做过了,但使用的是字符串而不是字符,所以我明天会接受答案,届时我将修改代码

这应该相当于
解码字符

public char decodeChar(char c, string[] a, string[] a2)
{
    for(var j = 0; j < a.Length; j++)
    {
        if(c == a1[j])
            return a2[j];
        if(c == a2[j])
            return a1[j];
    }
    return c;
}
public char decodeChar(char c,string[]a,string[]a2)
{
对于(变量j=0;j
这应该相当于
解码字符

public char decodeChar(char c, string[] a, string[] a2)
{
    for(var j = 0; j < a.Length; j++)
    {
        if(c == a1[j])
            return a2[j];
        if(c == a2[j])
            return a1[j];
    }
    return c;
}
public char decodeChar(char c,string[]a,string[]a2)
{
对于(变量j=0;j
这很简单:

String DecodeChar(char c, string[] a1, string[] a2) {
  for(int i=0; i<a1.length; ++i) {
    if(a1[i] == c) return a2[i];
    if(a2[i] == c) return a1[i];
  }
  return c;
}
String DecodeChar(字符c,字符串[]a1,字符串[]a2){
对于(int i=0;i来说,这很容易:

String DecodeChar(char c, string[] a1, string[] a2) {
  for(int i=0; i<a1.length; ++i) {
    if(a1[i] == c) return a2[i];
    if(a2[i] == c) return a1[i];
  }
  return c;
}
String DecodeChar(字符c,字符串[]a1,字符串[]a2){
对于(int i=0;i请尝试以下方法:

char decode_char(char c, string a1, string a2)
{
    for (int i = 0; i < a1.Length; i++)
    {
        if (c == a1[i]) return a2[i];
        if (c == a2[i]) return a1[i];
    }
    return c;
}
string decode_str(string s)
{
    const string a1 = "0123456789WGXMHRUZID=NQVBL";
    const string a2 = "bzaclmepsJxdftioYkngryTwuv";
    StringBuilder sb = new StringBuilder();
    foreach (char c in s)
        sb.Append(decode_char(c, a1, a2));
    return DecodeFrom64(sb.ToString());
}
string DecodeFrom64(string encodedData)
{
    byte[] encBytes = Convert.FromBase64String(encodedData);
    return Text.Encoding.Unicode.GetString(encBytes);
}
字符解码\u字符(字符c、字符串a1、字符串a2)
{
对于(int i=0;i
试试这个:

char decode_char(char c, string a1, string a2)
{
    for (int i = 0; i < a1.Length; i++)
    {
        if (c == a1[i]) return a2[i];
        if (c == a2[i]) return a1[i];
    }
    return c;
}
string decode_str(string s)
{
    const string a1 = "0123456789WGXMHRUZID=NQVBL";
    const string a2 = "bzaclmepsJxdftioYkngryTwuv";
    StringBuilder sb = new StringBuilder();
    foreach (char c in s)
        sb.Append(decode_char(c, a1, a2));
    return DecodeFrom64(sb.ToString());
}
string DecodeFrom64(string encodedData)
{
    byte[] encBytes = Convert.FromBase64String(encodedData);
    return Text.Encoding.Unicode.GetString(encBytes);
}
字符解码\u字符(字符c、字符串a1、字符串a2)
{
对于(int i=0;i
我将尝试重写解码字符;这并没有那么难

public char decode_char(char input, string[] array1, string[] array2)
{
  var result = input;
  for(var j = 0; j < array1.Length; j++) 
  {
    if (input == array1[j][0]) {
      result = array2[j][0];
      break;
    }
    if (input == array2[j][0]) {
      result = array1[j][0];
      break;
    }
  }
  return result;
}

我将尝试重写decode_char;这并不难

public char decode_char(char input, string[] array1, string[] array2)
{
  var result = input;
  for(var j = 0; j < array1.Length; j++) 
  {
    if (input == array1[j][0]) {
      result = array2[j][0];
      break;
    }
    if (input == array2[j][0]) {
      result = array1[j][0];
      break;
    }
  }
  return result;
}

你是说你仍然需要转换decode_char()?@M3NTA7是的,我仍然需要转换那个函数,我不确定我已经做的是否正确。你是说你仍然需要转换decode_char()?@M3NTA7是的,我仍然需要转换该函数,我不确定我已经做的是否正确。for循环上缺少花括号意味着您只是在第一个if语句上循环。如果
a1
a2
中找不到
c
,您也永远不会返回某些内容。for循环上缺少花括号oop意味着您只是在第一个if语句上循环。您也不会返回
c
a1
a2
中找不到的内容。如果
c
a1
a2
中找不到,
var result=c;
没有用处,则忘记返回内容:)你们这些人!我只是逐行查看原始函数。我想我应该进行更多的校对…而你们将字符与字符串进行比较;这是非法的。你们可以将其与作为字符串第一个索引的字符进行比较。:)如果在
a1
a2
中找不到
c
a2
,并且
var result=c;
没有用,您忘了返回一些内容:)你们这些人!我只是逐行查看原始函数。我想我应该进行更多的校对……而您正在将字符与字符串进行比较;这是非法的。您可以将字符与t进行比较hat是字符串的第一个索引。:)