拆分整数

时间:2014-06-15 18:49:08

标签: c# split int

我一直在互联网上搜索一段时间但是找不到我要找的东西。

让我先从一些代码示例开始:

int a = 25;

int b;
int c;

我想在这里做的是想要拆分a变量并将这两个值分配给变量bc。结果将是int b = 2int c = 5,反之亦然(在我打算使用此功能的目的无关紧要。)

你怎么能这样做?

3 个答案:

答案 0 :(得分:6)

您可以使用整数除法和模数:

int b = a / 10;
int c = a % 10;

如果变量a包含较大的数字,您首先要确定每个变量中需要多少位数。例如,如果您想要c中的两位数,则在两个操作中都使用100作为第二个操作数。

答案 1 :(得分:5)

您可以使用以下代码执行此操作:

int input = 123845;
var digits = input.ToString().Select(x=>int.Parse(x.ToString()));

首先将您的输入数字转换为字符串。然后,它在传递给Select时将此字符串视为字符数组。然后它将char转换为字符串,然后将其解析为int,从而产生IEnumerable<int>

值得注意的是,如果您的输入为负数,则此操作无效(它会抱怨-)。如果你愿意的话,在开始时检查“ - ”并不会太难。

另一种方法是不断除以10逐一取出所有数字。

public IEnumerable<int> GetDigits(int input)
{
    int currentNumber = input;
    List<int> digits = new List<int>();
    while (currentNumber !=0)
    {
        digits.Add(currentNumber%10);
        currentNumber = currentNumber/10;
    }
    digits.Reverse();
    return digits;
}

这会遍历将最后一位数字添加到列表中的数字。然后它返回反向列表。这确实处理了负数,如果输入为负,则所有输出数字都将为负数。

一个重要的注意事项是,这两种方法都将处理两位以上的输入数字。

答案 2 :(得分:0)

int a = 12345;
a = Math.Abs(a);
int length = a.ToString().Length;
int[] array = new int[length];
for (int i = 0; i < length; i++)
{
    array[i] = a % 10;
    a /= 10;
}