我想将字符串转换为字符数组。此外,必须使用枚举将字符数组中的值转换为数值。以整数形式返回的值必须存储在整数数组中。
我的编码是:
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[]
它会出现如下错误:
所以,我试图更改NumGen as int[]
,它说错误是这样的:
我该如何解决?
答案 0 :(得分: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;
}
我希望这会有所帮助
答案 1 :(得分:0)
您正在使用此枚举方法执行某些操作,只需将字符的数值转换为int,然后从最小字符('a')中减去并添加一个。当然,这仅适用于拉丁文小写字母,但这似乎是您正在处理的所有内容,因此我们可以忽略使用字符数值进行算术时可能出现的众多问题。
要将char
转换为int
,您可以使用以下内容:
// ch is a char
int intVal = (int)ch;
你可以将它们保存在一个数组中,你应该创建一个适当长度的数组(即输入字符串的长度),然后,当循环遍历源字符串的每个字符时,你保存{{ 1}}导致数组的右侧插槽。有很多方法可以做到这一点。就个人而言,我会使用一个可枚举的块,如下所示:
int
然后在您的调用代码中,您可以使用LINQ提取数组:
private static IEnumerable<int> StringToInts(string val) {
var aVal = (int)'a';
foreach(var ch in val)
yield return (int)ch - aVal + 1;
}