我有这个数组
char[] A = ['1', '2', '3', '4']
我希望你能将其转换为int[]。
int[] Aint=[1, 2, 3, 4]
有什么想法吗?
我刚开始学编程
谢谢
使用Array.ConvertAll
和Char.GetNumericValue
的另一个选项:
int[] Aint = Array.ConvertAll(A, c => (int)Char.GetNumericValue(c));
Array.ConvertAll
而不是 Select(…).ToArray()
有什么原因吗?我问这个问题是因为后者似乎现在更流行(而且你的 lambda 表达式需要 C# 3)。 - DouglasArray.ConvertAll
比 Select..ToArray
更高效,因为它预先分配了正确大小的数组并且不会进行任何调整大小操作。正如 Gray 已经提到的那样,它也更易读/明确。 - Tim SchmelterChar.GetNumericValue
返回的是 double
而不是 int
(它不是一个单个数字吗?):https://dev59.com/W3E85IYBdhLWcg3wQxLG#2867132 - Tim Schmelter要获取数字字符('0'
到'9'
)的数值,您可以将其自身的代码点减去'0'
的代码点。
int[] Aint = A.Select(a => a - '0').ToArray();
数字字符被分配连续的编码点。 '0'
的编码点为 48
;'1'
的编码点为 49
,以此类推,直到 '9'
,它的编码点为 57
。因此,当您从两个数字字符中减去时,您将获得与减去它们的数值相同的结果。从任何数字中减去 '0'
将给出后者的绝对值。using System.Linq
来实现。 - Marco Lackovicusing System.Linq;
的 using 语句后,您可以执行以下操作:int[] Aint = A.Select(i => Int32.Parse(i.ToString())).ToArray();
如果无法解析A
中的元素,您将会收到一个异常。
char[] A = {'1', '2', '3', '4'};
int[] Aint = new int[A.Length];
for (int i = 0;i < A.Length;i++)
{
Aint[i] = Convert.ToInt32(A[i].ToString());
}
int[] Aint = A.Select(c => c - 48).ToArray(); // or c - '0'
你也可以这样做:
int[] Aint = A.Select(c => Convert.ToInt32(c.ToString())).ToArray();
这将选择所有字符数组作为字符串,将它们转换为数组,然后返回一个整数数组。