【问题标题】:Linq using string.format on a string array [closed]Linq 在字符串数组上使用 string.format [关闭]
【发布时间】:2017-09-21 13:01:43
【问题描述】:

我有一个字符串数组。

var array = new string[] { "test", "test2", "test3" };

我正在尝试将它加入到一个字符串中,在数组中的每个值前面都有一个 $,请参见下面的示例。

$test, $test2, $test3

我一直在尝试使用 Linq 执行此操作,但到目前为止我的所有尝试都失败了。

我目前的尝试

var formated = array.Select(a => string.Format("${0}", a)).ToArray();

结果:

'索引(从零开始)必须大于或等于零且小于参数列表的大小。'

我知道我以前做过这个,但我记不清是怎么做的了。除非有人有更好的主意,否则我打算转储格式化为 String.Join。

【问题讨论】:

  • 记住大多数索引从零开始,而不是一。
  • 使用 C#6,您可以使用字符串插值:array.Select(s => $"${s}") 来避免此类问题
  • 你相信我已经看了 20 分钟。
  • @TimSchmelter 将其添加为答案,我会接受它的优雅
  • 总是仔细阅读错误信息,它都在里面:索引(从零开始)必须...

标签: c# arrays linq


【解决方案1】:

String.Format 中有错误的索引,索引是从零开始的。

使用 C#6,您可以使用 string interpolation ...

array = array.Select(s => $"${s}").ToArray();

...避免此类问题

【讨论】:

  • 谢谢你,我知道有更好的方法。我什至曾经尝试过 foreach
【解决方案2】:

你很亲密

var formated = array.Select(a => string.Format("${0}", a)).ToArray();

【讨论】:

    【解决方案3】:

    你也可以这样做,

    var newArray = array.Select(x => "$" + x ).ToArray();
    

    【讨论】:

      【解决方案4】:

      不要在 linq 中使用 string.format,为什么不连接字符串。

      var array = new string[] { "test", "test2", "test3" };
      var formated = array.Select(x => "$" + x).ToArray();
      

      【讨论】:

      • 与上面发布的答案相同
      • 在发布之前我没有看到答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多