-3

私は次の文字列を持っています:

string input = "  2  1";

その後にaが2 spaces続き、2その後に。2 more spacesが続き1ます。置換したいのですが、2との間のスペース1を0に置き換えたいだけで、可能であれば正規表現を使用したくないですか?

最終結果は次のようになります。

string result = "  2001";

20 340400 1-20-34-04-00-00001.0-0000.00

20 340400 500-20-34-04-00-00500.0-0000.00

20 340900 C-20-34-09-00-0000C.0-0000.00

20 3435OG 1 1-20-34-35-OG-00001.0-0001.00

20 3435OG 2 10-20-34-35-OG-00002.0-0010.00

20 3435OG A-20-34-35-OG-0000A.0-0000.00

20 3436AA 1 4A-20-34-36-AA-00001.0-0004.A

20 3436AA 2 10B-20-34-36-AA-00002.0-0010.B

20 353100 268-20-35-31-00-00268.0-0000.00

20G3402AI 1 401-20G-34-02-AI-00001.0-0004.01

20G3403AI 7 1-20G-34-03-AI-00007.0-0001.00

20G3416MK 1701-20G-34-16-MK-00000.0-0017.01

21 3410OM 148-21-34-10-OM-00000.0-0147.00

私が気付いたいくつかのことは、最初の4つの部分がまとめられ、ほとんどのスペースと小数が削除されていることです。ほとんどの場合、正規表現なしで成功しましたが、失敗する場合もあります。

4

7 に答える 7

2

どうですか:

static string ReplaceSpacesWithZerosExceptLeading(string s)
{
    return s.TrimStart(' ').Replace(' ', '0').PadLeft(s.Length);
}

これにより、先頭のスペースが削除され、残りがゼロに置き換えられてから、先頭のスペースが元に戻されます。

編集:気にしないでください、この答えはすでに存在しています...

于 2012-11-09T19:34:35.327 に答える
1
string input = "  2  1";
string result = string.Format("  {2}00{4}", input.Split(' ')); //Gives "  2001"
于 2012-11-09T19:40:51.087 に答える
0
var result = input.TrimStart().Replace(' ', '0'); // "2001"

先頭のスペースが重要な場合は、次のようにします。

var result = input.TrimStart().Replace(' ', '0').PadLeft(input.Length, ' '); 
于 2012-11-09T19:30:57.643 に答える
0

試す(Input.Trim()).Replace(" ", "0");

于 2012-11-09T19:30:59.497 に答える
0

これには本当にRegExを使用する必要がありますが、次のことも試すことができます。

input.Replace(input.Trim(), input.Trim().Replace(" ", "0"));

明らかにそれは最適ではありませんが、それでうまくいくはずです。

于 2012-11-09T19:32:40.383 に答える
0
string txt = "  2  1";
string txt1 = txt.Substring(0, (txt.Length - txt.TrimStart().Length)) + txt.TrimStart().Replace(" ", "0");
Debug.WriteLine(txt1);

または番号が範囲内にある場合

long num = long.Parse(txt.Replace(" ", "0"));
txt1 = num.ToString().PadLeft(txt.Length);
Debug.WriteLine(txt1);
于 2012-11-09T19:35:55.480 に答える
0

楽しみのために、Linqを使用できます。

string result = string.Format("{0}{1}{2}",
                   new string(input.Take(3).ToArray()), //get first three values
                   "00", //insert 00
                   new string(input.Skip(5).ToArray())); //get last value
于 2012-11-09T19:54:49.477 に答える