拆分一个整数

问题描述 投票:0回答:4

我已经在互联网上搜索了一段时间,但没有找到我要找的东西。

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

int a = 25;

int b;
int c;

这里我想做的是把

a
变量拆分,把两个值赋给变量
b
c
。结果将是
int b = 2
int c = 5
,反之亦然(我要使用它的目的无关紧要)。

你怎么能这样做?

c# split int
4个回答
8
投票

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

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

如果变量

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


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;
}

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

重要的一点是,这两种方法都将处理多于两位数的输入数字。


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;
}

0
投票
    int myNumber = 123456;
    string myWord = Convert.ToString(myNumber);

    string partOne = myWord.Substring(0, 2);
    string partTwo = myWord.Substring(2, 2);
    string partThree = myWord.Substring(4, 2);

    int num01 = Convert.ToInt32(partOne);
    int num02 = Convert.ToInt32(partTwo);
    int num03 = Convert.ToInt32(partThree);

    Console.WriteLine(num01);
    Console.WriteLine(num02);
    Console.WriteLine(num03);

    Output:
    12
    34
    56
© www.soinside.com 2019 - 2024. All rights reserved.