12

次のように、C# で文字列を分割する必要があります。

文字列は次のようなものです。0000120400567

先頭には常に0s があります。上記の例では、6 つのゼロの後に が続き120400567ます。最後の部分を取得した文字列を分割したい120400567

001245878945先頭のゼロの数は変わる可能性があります(最後のパーツ番号は 1 つずつ増加します) 1245878945

この文字列を最初の 0 または最初の x 個のゼロを残して分割し、最後の番号のみを取得するにはどうすればよいですか? 数字の先頭にゼロがなく、数字が最初の数字から直接始まるようになっている可能性があります...しかし、数字に8個のゼロと2桁以上の数字が含まれている可能性があります。

4

5 に答える 5

23
string withoutLeadingZeroes = withLeadingZeroes.TrimStart('0');

(また

string withoutLeadingZeroes = Regex.Replace(withLeadingZeroes, "^0*", "");

また

string withoutLeadingZeroes = new String(
    withLeadingZeroes.SkipWhile(c => c == '0').ToArray());

また ...)

于 2012-12-11T12:16:40.670 に答える
9

TrimStart is your friend. However, you need to be careful that you don't end up with an empty string when your original consists of 0s only.

string s = "0000120400567";
s = s.TrimStart('0');
if (s == "")
    s = "0";
于 2012-12-11T12:21:18.363 に答える
5

int.Parse文字列を整数に変換するために使用できます。これは先頭のゼロを削除しますが、もちろん int (または long を使用する場合) の範囲内の文字列に制限されます。

于 2012-12-11T12:17:39.377 に答える
4

int32 や long など、必要なものに変換してから、文字列に変換してみませんか?

int i = int.Parse("0000120400567");
        string s = i.ToString();
于 2012-12-11T15:47:11.013 に答える
0

文字列に数値の範囲がある場合は、その文字列(?:\b(?:0+|(?=[1-9])))を分割するために使用できます

したがって0534 000500 35435 040、上記で分割するとregex

534 
500
35435 
40

単一の数字のみが含まれる場合は必要ありませんRegex。特にsplitting

しかし、それでもsplitその文字列が必要な場合は、次の方法で実行できます(?:^0+|^)

于 2012-12-11T12:49:22.567 に答える