StringBuilder的格式结构

本文关键字:格式结构 StringBuilder | 更新日期: 2023-09-27 18:01:56

private void add_value_to_row(client_file client_file, ref StringBuilder OutputCustomer, String value)
{
   if (client_file.output_format == "txt") 
      if (value = "the first value in add_value_to_row")
         OutputCustomer.AppendFormat("{0}", value); 
      else if (value = "every other value in add_value_to_row")  
         OutputCustomer.AppendFormat("'t{0}", value);
}

我在上面写了一个函数,它从"x"获取输入,并根据下面的代码创建.txt格式的数据行。我想知道如何编写嵌套的if语句,以便它执行引号中所写的内容?根据以下数据的最终输出应输出OutputCustomer.AppendFormat("{0}'t{1}'t{2}'t{3}'t{4}", x.url, x.company, x.Country, x.vendor, x.product);

OutputCustomer = new StringBuilder();
add_value_to_row(clientInfo.cf, ref OutputCustomer, x.url);
add_value_to_row(clientInfo.cf, ref OutputCustomer, x.company);
add_value_to_row(clientInfo.cf, ref OutputCustomer, x.Country);
add_value_to_row(clientInfo.cf, ref OutputCustomer, x.vendor);
add_value_to_row(clientInfo.cf, ref OutputCustomer, x.product);

StringBuilder的格式结构

为什么要一个一个地添加条目?把你的对象交给方法,让它来决定。

private void add_value_to_row(client_file client_file, ref StringBuilder OutputCustomer, YourType value)
{
   if (client_file.output_format == "txt") 
     OutputCustomer.AppendFormat("{0}'t{1}'t{2}'t{3}'t{4}",
     value.url,value.company,value.Country,value.vendor,value.product); 
}

然后这样命名

add_value_to_row(clientInfo.cf, ref OutputCustomer, x);

否则必须在方法签名

中给出bool或int类型

如果你真的想让你的方法保持原样你需要在签名

中加入一个布尔值
private void add_value_to_row(client_file client_file, ref StringBuilder OutputCustomer, String value, bool isFirst=false)
{
   if (client_file.output_format == "txt") 
      if (isFirst)
         OutputCustomer.AppendFormat("{0}", value); 
      else  
         OutputCustomer.AppendFormat("'t{0}", value);
}

然后这样命名

add_value_to_row(clientInfo.cf, ref OutputCustomer, x.url, true);
add_value_to_row(clientInfo.cf, ref OutputCustomer, x.company);
add_value_to_row(clientInfo.cf, ref OutputCustomer, x.Country);
add_value_to_row(clientInfo.cf, ref OutputCustomer, x.vendor);
add_value_to_row(clientInfo.cf, ref OutputCustomer, x.product);

还要注意的是,你可以把它作为一个可选参数,这样你就不需要每次都写

看起来您正在尝试创建一个以制表符分隔的输出行。更简单的方法是:

string outputCustomer = string.Join("'t", new {x.url, x.company, x.Country, x.vendor, x.product});

看到String.Join。