StringBuilder每行写入的字符数

时间:2013-02-01 15:40:55

标签: c# stringbuilder maxlength

您好我已经使用C# StringBuilder创建了一些写入.txt文件的object代码,一切似乎都没问题,但问题是我需要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(精确数量)。任何人都可以帮我这个吗?

5 个答案:

答案 0 :(得分:9)

只需使用PadRight(或PadLeft,如果合适的话)就可以正确使用它。

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

答案 1 :(得分:2)

不确定。只需查看String.format方法,并指定实现此目的的格式。

在你的情况下,它意味着做类似的事情:

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

答案 2 :(得分:0)

如何简单地计算然后using this overload?:

...

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

...

答案 3 :(得分:0)

您可以使用this string constructor重复空格:

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

Demo

(所以我认为没有理由在这里使用StringBuilder

答案 4 :(得分: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();
        }
      }