1

您好,我创建了一些C#使用 .txt 文件写入的代码StringBuilder 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();
    }
}

有一个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;

演示

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

于 2013-02-01T15:44:02.470 回答