繁体   English   中英

使用枚举将字符串转换为整数并将其作为整数数组存储在c#中

[英]Converting string to integer using enum and storing it as integer array in c#

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

我的编码是:

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);
      }
}

我试图将string name转换为char[]它表示如下错误:

ERROR1

所以,我试图将NumGen as int[] ,它说错误是这样的:

误差2

我怎么解决呢?

看看下面是否是您需要的,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;
}

然后在您的调用代码中,您可以使用LINQ提取数组:

var intArray = StringToInts("Some string").ToArray();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM