【问题标题】:String.Join is not working with AppendAllText (C#)String.Join 不适用于 AppendAllText (C#)
【发布时间】:2018-05-27 04:59:21
【问题描述】:

我有以下字符串

string str= "Insert into " + tname + "(id, t, v) values(" + lc+ ", " + mc+ ", " + rc+");" + Environment.NewLine;

我将其写入文件:

File.AppendAllText(fileName, str);

它正在工作。

我也尝试过使用string.Join

string str = string.Join("Insert into " + tname+ "(id, t, v) values(" + lc+ ", " + mc+ ", " + rc+ ");", Environment.NewLine);
File.AppendAllText(fileName, str);

但文件始终为空。怎么了?

【问题讨论】:

  • 阅读documentation on String.Join是一个好的开始
  • Join就是用分隔符连接一个String数组..
  • 1) 输入参数的顺序错误 2) 第二个参数应该是IEnumerable。因此,即使您更改顺序,您也会将每个字符打印在单独的行上
  • 在这里,您使用长字符串作为Environment.NewLine 字符串中每个字符的分隔符,因此您的文件应该只包含Environment.NewLine...
  • 旁注 - 此插入语句表明您有不同的表,它们具有相同的结构,描述了数据库中的相同实体。这是一个糟糕的数据库设计。您应该将其更改为单个表,并使用您当前的设计表名称作为该表中的另一列。

标签: c# string join stream append


【解决方案1】:

我认为你需要的是 string.Format()

string str = string.Format("Insert into {0}(id, t, v) values({1}, {2}, {3});{4}",tname, lc,mc,rc, Environment.NewLine);

String.Format() documentation

【讨论】:

    【解决方案2】:

    string.Join 是使用分隔符连接对象的String[]

    例如

    List<int> l= new List  { 1,2,3 };
    var s = string.Join(",",l);
    

    s 然后是"1,2,3"

    在您的代码中,您基本上传递了一个很长的分隔符(您的字符串)和一个空数组。

    Documentation for string.Join

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-09
      • 1970-01-01
      • 1970-01-01
      • 2017-03-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多