代码之家  ›  专栏  ›  技术社区  ›  Lucas Han

StringBuilder的格式结构

  •  -1
  • Lucas Han  · 技术社区  · 8 年前
    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);
    
    2 回复  |  直到 8 年前
        1
  •  0
  •   Ashkan S Govindaraju    8 年前

    你为什么要一个接一个地添加项目?将对象交给方法,让它决定。

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

    否则,您必须在方法signiture中给出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);
    

    还要注意,您可以将其作为可选参数,这样就不需要每次都编写它

        2
  •  0
  •   Jim Mischel    8 年前

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

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

    看见 String.Join .