11

我有这些数组

char[] array = {'1', '2', '3', '4'};
int[] sequence = new int[array.Length];  

有没有一种简单的方法可以将数字分配arraysequence

我试过这个

for (int i = 0; i < array.Length; i++)
{
    seqence[i] = Convert.ToInt32(array[i]);
}

但我得到 1、2、3、4 的 ASCII 编码,而不是数字本身。

4

9 回答 9

11
using System.Linq;

char[] array = { '1', '2', '3', '4' };
var ints = array.Select(x => int.Parse(x.ToString()));
于 2013-10-31T13:45:09.847 回答
6

只需将其转换charstring第一个:

for (int i = 0; i < array.Length; i++)
{
     sequence[i] = Convert.ToInt32(array[i].ToString());
}

但是,当然,您可以在单个 linq 查询中完成所有这些操作:

char[] array = {'1', '2', '3', '4'};
int[] sequence = array.Select(c => Convert.ToInt32(c.ToString())).ToArray();
于 2013-10-31T13:46:25.920 回答
4

如果您首先将每个字符转换为字符串,则使用int.Parse(或仍然Convert.ToInt32)将起作用。

我个人会为此使用 LINQ,例如

int[] sequence = array.Select(x => int.Parse(x.ToString())).ToArray();

...或者ToList如果您对List<int>.

如果您想Char.GetNumericValue按照另一个答案中的建议使用,您也可以将其与 LINQ 一起使用:

int[] sequence = array.Select(x => (int) char.GetNumericValue(x)).ToArray();

请注意,强制转换为int是必需的,因为char.GetNumericValue返回一个double. (例如,“a half”等值有 Unicode 字符。)

或者,如果您绝对确定您将使用 ASCII 数字,您可以使用快速而肮脏的:

int[] sequence = array.Select(x => x - '0').ToArray();
于 2013-10-31T13:45:27.533 回答
3

尝试

for (int i = 0; i < arr.Length; i++)
 {
     seqence[i] = (int)Char.GetNumericValue(array[i]);
 }
于 2013-10-31T13:44:47.737 回答
1

您可以使用Enumerable.Range来实现这一点。它生成一个从 - 到的连续数字序列。

只是一个例子:

 IEnumerable<int> squares = Enumerable.Range(1, 10)

如果原始 char 数组只是 char 中的连续数字序列,则属于这种情况。

如果数组是任意顺序和顺序的主题,只需使用正确的转换:

array.Select(x => int.Parse(x.ToString()))
于 2013-10-31T13:44:55.343 回答
0

遍历您的 char 数组并使用下一个转换:

char[] charArray = { '1', '2', '3', '4' };

int[] intArray= new int[charArray .Length];

for (int i = 0; i < charArray .Length; i++)
{
    intArray[i] = (int)Char.GetNumericValue(charArray[i]);   

}
于 2013-10-31T13:45:25.777 回答
0

用这个:

for (int i = 0; i < array.Length; i++)
{
    sequence[i] = array[i] - '0';
}

这里有很多正确的答案,但是(除非你想使用不安全的代码)这是最快的,而且它不使用额外的内存。

于 2013-10-31T13:46:16.390 回答
0

尝试这个:

char[] array = { '1', '2', '3', '4' };

int[] sequence = new int[array.Length];

for (int i = 0; i < array.Length; i++)
{
    sequence[i] = int.Parse(array[i].ToString());
}
于 2013-10-31T13:46:19.520 回答
0

在转换为整数之前尝试将您的 Char 值转换为字符串:

for (int i = 0; i < arr.Length; i++)
{
  sequence[i] = Convert.ToInt32(array[i].ToString());
}
于 2013-10-31T13:46:56.207 回答