簡體   English   中英

每行寫入的StringBuilder字符數

[英]StringBuilder number of characters written per line

您好,我已經創建了一些C#代碼,並使用StringBuilder object將其寫入.txt文件,一切似乎都不錯,但是問題是我每行恰好需要200個字符。 例如,當程序在一行中設置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();
    }
}

有一個名為“ partNumber”的字符串variable ,其長度會有所不同。 有時長度可以是15或14或10,但是此長度和空格的總和可能是200(精確數量)。 誰能幫我這個?

只要使用PadRight (或者PadLeft如果合適的話),因為它是專門用來做正是這一點。

sw.WriteLine(("001" + partNumber).PadRight(200));

當然。 只需看一下String.format方法,並指定格式即可實現此目的。

在您的情況下,這意味着您需要執行以下操作:

string line = String.Format("{0,-200}", input);

簡單計算然后使用此重載怎么樣?:

...

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 );
}

...

您可以使用以下字符串構造函數重復空白:

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

演示版

(所以我沒有理由在這里使用StringBuilder

使用具有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();
        }
      }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM