我有一个这样的数字: 12345668788451223356456898941220036696897894
现在,问题是如何在每8位数后分割数字。也就是说, 我需要输出为: 12345668
78845122等等到数字结尾。 如果我将它转换为字符串,我没有方法,所以我只能用长度参数拆分它。
提前感谢您的回答。
答案 0 :(得分:4)
字符串方法
如果我将它转换为字符串,我没有方法,所以我只能用长度参数拆分它。
你有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);
}
如果您需要以List<int>
结尾,只需在此处添加对int.Parse
的通话。
(您应该首先检查输入字符串长度是否为8的倍数。)
BigInteger方法
目前还不清楚你的这个号码是什么形式的。如果是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。你需要知道你想要提取多少个数字:)
答案 1 :(得分:2)
使用此正则表达式在每8位数后分割
\d{1,8}
OR
(\d{1,8})
12345668
78845122
33564568
98941220
03669689
7894
答案 2 :(得分:0)
您是否尝试过使用
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);
}