-3

重複の可能性:
C# 文字列の書式設定とパディング

私の C# プログラムには、次の 4 つの変数があります。

string checkNo = "1234";
string checkAmount = "25.60";
string checkCashedDate = "120413";
string filler = "   "; // three spaces

次のような文字列 (26 桁の長さ) を作成したいと思います。

"00123400000002560120413   "

手動で行うことができます。つまり、各フィールドの長さを確認し (小数を削除)、適切な量のゼロを埋め込み、最終的な文字列に追加します。しかし、私はもっと速い方法があることを望んでいました。特定の形式 (すべてゼロ) で文字列を作成し、値を「ドロップイン」するようなものです。C# で利用できるこのようなものはありますか? 助けとアドバイスをありがとう。

4

4 に答える 4

5

String.PadLeftを使用して、この文字列を適切に作成できます。

string result = checkNo.PadLeft(6, '0') + 
                checkAmount.Replace(".","").PadLeft(11, '0') +
                checkCashedDate.PadLeft(6, '0') + filler;

そうは言っても、これらの値DateTimeを文字列値ではなく数値として個人的に保存し、単一の String.Format ステートメントを使用して結果を再フォーマットします。これにより、値を操作する際の型の安全性が向上します。

于 2012-05-15T16:12:03.140 に答える
4

Use string.PadLeft to ensure the width of each part of the larger string, in conjunction with string.Format and string.Replace.

checkNo.PadLeft(6, '0') + 
checkAmount.Replace(".", "").PadLeft(11, '0')  + 
checkCashedDate.PadLeft(6, '0') + filler

Or:

string.Format("{0}{1}{2}{3}",
              checkNo.PadLeft(6, '0'),
              checkAmount.Replace(".", "").PadLeft(11, '0'),
              checkCashedDate.PadLeft(6, '0'),
              filler);

Or, (using Composite Formatting), as Guffa posted:

string.Format(
  "{0,6}{1,11}{2,6}",
  checkNo,
  checkAmount.Replace(".", ""),
  checkCashedDate
).Replace(" ", "0") + filler
于 2012-05-15T16:09:18.753 に答える
2

String.Formatスペースを埋めるために使用し、それらのスペースをゼロに置き換えることができます。

String.Format(
  "{0,6}{1,11}{2,6}",
  checkNo,
  checkAmount.Replace(".", ""),
  checkCashedDate
).Replace(" ", "0") + filler
于 2012-05-15T16:15:41.530 に答える
1

String.Format()メソッドを確認してください。

この例は、メソッドを使用してString.Format数値の文字列を生成する方法を示しています。

String.Format("{0,6}{1,11}{2,6}", checkNo, checkAmount, checkCashedDate).Replace(' ','0');
于 2012-05-15T16:06:31.937 に答える