C# 数字到具有可变填充量零的数字数组
我有一个函数,它获取一个C# 数字到具有可变填充量零的数字数组,c#,C#,我有一个函数,它获取一个数字和一个数字量,并且应该返回一个数字数组(或数组列表),该数组的大小正好是数字 样本输入1:12345,6 应输出:“012345” 样本输入2:123456,6 应输出:“123456” 样本输入3:1,8 示例输出:“00000001” 我现在正在做这个 public int[] digitArrayFromNumber(int number, int digits){ int[] result = number.ToString().PadLeft(dig
数字
和一个数字量
,并且应该返回一个数字数组(或数组列表),该数组的大小正好是数字
样本输入1:12345,6应输出:“012345” 样本输入2:123456,6
应输出:“123456” 样本输入3:1,8
示例输出:“00000001” 我现在正在做这个
public int[] digitArrayFromNumber(int number, int digits){
int[] result = number.ToString().PadLeft(digits, '0').ToArray().Select(
ch => Convert.ToInt32(ch.ToString())
).ToArray();
return result;
}
但这看起来真的很难看,在我看来,可能有更好的可读性方法来做到这一点。你可以使用数学:
int[] arr = new int[digits];
for (int i = 0; i < digits; i++)
{
arr[digits - i - 1] = number % 10;
number /= 10;
}
int[]arr=新整数[位数];
对于(int i=0;i
使用模运算符检索最后一个数字的值,然后除以10切掉最后一个数字。要获取数字字符的数值,只需从中减去
'0'
int[] result = number.ToString("D" + digits).Select(i => i - '0').ToArray();
您可以对其进行更好的格式化并删除第一个
ToArray()
(不需要它,因为字符串已经是IEnumerable
),或者使用int.Parse
,因为它较短
public int[] digitArrayFromNumber(int number, int digits)
{
return number.ToString()
.PadLeft(digits, '0')
.Select(c => int.Parse(c.ToString()))
.ToArray();
}
然而,@SLaks提供了一种更简单、更短的方法。丑陋?这是藏在函数中的几行代码,您很少需要查看这些代码at@musefan丑陋的代码往往有很多bug,这就是为什么我已经第五次阅读这段代码了。