C# 使用enum将字符串转换为整数并将其存储为c中的整数数组#

C# 使用enum将字符串转换为整数并将其存储为c中的整数数组#,c#,string,enums,foreach,to-char,C#,String,Enums,Foreach,To Char,我想将字符串转换为字符数组。此外,必须使用enum将字符数组中的值转换为数值。作为整数返回的值必须存储在整数数组中 我的编码是: enum alphabets { a = 1,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} static void Main() { int row,column; String value1; Console.WriteLine("Enter string")

我想将字符串转换为字符数组。此外,必须使用enum将字符数组中的值转换为数值。作为整数返回的值必须存储在整数数组中

我的编码是:

enum alphabets {  a = 1,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}
static void Main()
    {
       int row,column;
       String value1;
       Console.WriteLine("Enter string");
       string UserString= Console.ReadLine();
       int len = UserString.Length;

       if (len % 2 == 0)
          {
             row = len / 2;
             column = len / 2;
             PrintMatrix(row, column, len, value1);
          }

    Console.ReadKey();
    }

static void PrintMatrix(int row, int column, int len, string value1)
{
    Console.WriteLine("Matrix");
    string mat_row = value1.Substring(0, row);
    string mat_col = value1.Substring(row, len - row);
    GenNum(mat_row,len);
    GenNum(mat_col,len);
}

static void GenNum(string val, int len)
{
    string res = val; 

    foreach (char c in res)
      {
         string name = c.ToString();
         alphabets parsed = (alphabets)Enum.Parse(typeof(alphabets), name);
         int NumGen = (int)parsed;
         Console.WriteLine (NumGen);
      }
}
我试图将
字符串名
转换为
char[]
它的错误如下:

// ch is a char
int intVal = (int)ch;

因此,我尝试将
NumGen更改为int[]
,它显示如下错误:


我怎样才能解决它

看看下面是否是您需要的,GenNum现在返回字符串表示的int[]

    enum alphabets { a = 1, 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 }
    static void Main()
    {
        Console.WriteLine("Enter string");
        string UserString = Console.ReadLine();
        int len = UserString.Length;
        int row = 1, column = 3;

        if (len % 2 == 0)
        {
            row = len / 2;
            column = len / 2;
            PrintMatrix(row, column, len, UserString);
        }

        Console.ReadKey();
    }

    static void PrintMatrix(int row, int column, int len, string value1)
    {
        Console.WriteLine("Matrix");
        string mat_row = value1.Substring(0, row);
        string mat_col = value1.Substring(row, len - row);
        int[] arrayRow = GenNum(mat_row, len);
        int[] arrayCol = GenNum(mat_col, len);
    }

    static int[] GenNum(string val, int len)
    {
        string res = val;
        int[] intArray = new int[len];
        int index = 0;

        foreach (char c in res)
        {
            string name = c.ToString();
            alphabets parsed = (alphabets)Enum.Parse(typeof(alphabets), name);
            int NumGen = (int)parsed;
            intArray[index++] = NumGen;
            Console.WriteLine(NumGen);
        }

        return intArray;
    }

我希望这有助于

您正在使用此枚举方法来做一些事情,只需将字符的数值转换为int,然后从最小字符('a')中减去并添加一个即可。当然,这只适用于拉丁字母和小写字母,但这似乎是您要处理的全部内容,因此我们可以忽略在对字符的数值进行算术运算时可能出现的大量问题

要将
char
转换为
int
,可以使用以下命令:

// ch is a char
int intVal = (int)ch;
您可以将它们保存在数组中,您应该创建一个具有适当长度(即输入字符串的长度)的数组,然后在循环源字符串的每个字符时,将
int
结果保存在数组的右侧插槽中。有很多方法可以做到这一点。就个人而言,我会使用可枚举块,如下所示:

private static IEnumerable<int> StringToInts(string val) {
    var aVal = (int)'a';
    foreach(var ch in val)
        yield return (int)ch - aVal + 1;
}

您拥有的代码应该可以工作。为什么要将
名称
更改为
字符[]
NumGen
更改为
int[]
,而这些显然不是应该存在的类型?重要的是要考虑你在做什么,而不是盲目地修改代码。你确定你的静态void Main()粘贴正确吗?行、列或值1没有定义。我试过你的代码,它工作得非常好!你想要字符串的int[]对吗?@Arsalan Adam Khatri。是的,没错。但不能将其存储在variable@janani:int数组将满足此要求。当然,我不知道您的程序实际上在做什么,所以我无法理解为什么char数组很重要,但这里经常出现这样的情况。顺便说一下,您不需要将
len
传递给这些方法。字符串和数组都具有提供此信息的
Length
属性。