我已经在互联网上搜索了一段时间,但没有找到我要找的东西。
让我从一些代码示例开始:
int a = 25;
int b;
int c;
这里我想做的是把
a
变量拆分,把两个值赋给变量b
和c
。结果将是int b = 2
和int c = 5
,反之亦然(我要使用它的目的无关紧要)。
你怎么能这样做?
您可以为此使用整数除法和模数:
int b = a / 10;
int c = a % 10;
如果变量
a
包含较大的数字,您首先要确定每个变量中需要多少位数字。例如,如果您想要 c
中的两个数字,则可以使用 100
作为两个操作中的第二个操作数。
一种方法是使用以下代码:
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;
}
这将循环遍历将最后一位数字添加到列表中的数字。然后它返回颠倒的列表。这确实处理负数,如果输入为负,所有输出数字都将为负。
重要的一点是,这两种方法都将处理多于两位数的输入数字。
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;
}
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