1

こんにちはC#、を使用して .txt ファイルに書き込むコードをいくつか作成しましたStringBuilder object。すべて問題ないようですが、問題は、各行に正確に 200 文字が必要なことです。たとえば、プログラムで 1 行に 10 文字の文字列変数値を設定する場合 (この値は文字数によって異なります)、その行には 190 個の空白を含める必要があります。これは私が持っているコードの例です:

if (File.Exists(DLFile))
{
  using (StreamWriter sw = new StreamWriter(DLFile))
    {
      StringBuilder stringBuilder = new StringBuilder();
      stringBuilder.Append("001" + partNumber + " ").AppendLine(); 
      String innerString = stringBuilder.ToString();
      sw.WriteLine(innerString);
      sw.Close();
    }
}

variable長さが異なる「partNumber」という名前の文字列があります。長さが 15、14、または 10 の場合もありますが、この長さと空白スペースの合計は 200 (正確な数) になる場合があります。誰でもこれで私を助けることができますか?

4

5 に答える 5

9

PadRightまさにこれを行うように設計されているので、 (またはPadLeft適切な場合)使用してください。

sw.WriteLine(("001" + partNumber).PadRight(200));
于 2013-02-01T15:43:26.577 に答える
2

もちろん。String.formatメソッドを見て、これを実現するためのフォーマットを指定してください。

あなたの場合、それは次のようなことを意味します:

string line = String.Format("{0,-200}", input);
于 2013-02-01T15:44:32.450 に答える
0

200個のスペースを含む定義済みの文字列を使用してから、以下のように部分文字列を実行します

string space200 = "                                                                                                                                                                                                                                                                                                                                                                                    ";
      if (File.Exists(DLFile))
      {
        using (StreamWriter sw = new StreamWriter(DLFile))
        {
          StringBuilder stringBuilder = new StringBuilder();
          stringBuilder.Append("001").Append(partNumber).Append(space200.Substring(stringBuilder.ToString().Length, space200.Length - stringBuilder.ToString().Length)).AppendLine();

          String innerString = stringBuilder.ToString();
          sw.WriteLine(innerString);
          sw.Close();
        }
      }
于 2013-02-01T15:53:34.190 に答える
0

このオーバーロードを単純に計算してから使用するのはどうですか?:

...

var h = "001" + partNumber;
stringBuilder.Append( h );

stringBuilder.Append( ' ', 200 - h.Length );

...

それを(少し)よりエラープルーフにするために:

...

var h = "001" + partNumber;
stringBuilder.Append( h );

var a = 200 - h.Length;
if ( a > 0 )
{
    stringBuilder.Append( ' ', a );
}

...
于 2013-02-01T15:43:50.050 に答える
0

この文字列コンストラクタを使用して空白を繰り返すことができます:

int whiteSpacesLength = 200 - partNumber.Length; // assuming partNumber is never > 200
string whiteSpaces = new String(' ', whiteSpacesLength);
string innerString = partNumber + whiteSpaces;

デモ

(だから私はここで a を使う理由がわかりませんStringBuilder

于 2013-02-01T15:44:02.470 に答える