0

次のような番号があります: 12345668788451223356456898941220036696897894

ここで、問題は、8 桁ごとに数値を分割する方法です。つまり、12345668 として出力する必要があります。

78845122 など、番号の末尾まで。それを文字列に変換すると、メソッドがないため、長さパラメーターのみで分割できます。

答えてくれてありがとう。

4

3 に答える 3

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>代わりにa を使用する必要がある場合は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);
}

先頭に 0 がたくさんある場合に備えて、count単に 0 になるまでループするのではなく、ここで使用していることに注意してください。value抽出しようとしている数字の数を知る必要があります:)

于 2012-07-22T08:24:00.257 に答える
2

この正規表現を使用して、8 桁ごとに分割します。

\d{1,8}

また

(\d{1,8})

出力:

12345668
78845122
33564568
98941220
03669689
7894
于 2012-07-22T08:25:30.677 に答える
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);
}
于 2012-07-22T08:32:20.830 に答える