我有一个类似这样的号码:12345668788451223356456898941220036696897894
现在,问题是如何在每 8 位数字之后拆分数字。也就是说,我需要输出为:12345668
78845122 以此类推,直到号码结束。如果我将它转换为字符串,我没有一个方法,所以我只能用长度参数来分割它。
提前感谢您的回答。
字符串方法
如果我将它转换为字符串,我没有一个方法,所以我只能用长度参数来分割它。
嗯,你有Substring
,不是吗?您可以使用 LINQ:
var numbers = Enumerable.Range(0, bigNumber.Length / 8)
.Select(x => bigNumber.Substring(x * 8, 8)
.ToList();
或直接循环:
var numbers = new List<string>();
for (int i = 0; i < bigNumber.Length / 8; i++)
{
numbers.Add(bigNumber.Substring(i * 8, 8);
}
如果您需要以 a 结尾List<int>
,只需在其中添加一个调用即可int.Parse
。
(您应该首先检查输入字符串长度是否为 8 的倍数。)
大整数方法
目前尚不清楚您以什么形式开始使用此号码。如果是BigInteger
,您可以继续使用DivRem
:
BigInteger value = ...;
List<BigInteger> results = new List<BigInteger>();
BigInteger divisor = 100000000L;
for (int i = 0; i < count; i++)
{
BigInteger tmp;
value = BigInteger.DivRem(value, divisor, out tmp);
results.Add(tmp);
}
请注意,我在count
这里使用而不是循环直到value
为 0,以防您有很多前导 0。您需要知道要提取多少个数字:)
使用此正则表达式在每 8 位数字后拆分,
\d{1,8}
或者
(\d{1,8})
12345668
78845122
33564568
98941220
03669689
7894
您是否尝试过使用
string string.substring(int startIndex,int length)
在您的情况下,您可以编写一个循环从字符串中提取 8 位数字,直到提取所有数字
string sDigits = "12345668788451223356456898941220036696897894";
int iArrLen = sDigits.length / 8;
string[] sArrDigitList = new string[iArrLen];
for(int i=0; i < sDigits.length; i++)
{
sArrDigitList[i] = sDigits.substring(0, 8);
sDigits = sDigits.substring(sDigits.length-8);
}