【问题标题】:Prepend/Append string for each element in a string array为字符串数组中的每个元素添加/添加字符串
【发布时间】:2021-08-02 21:51:51
【问题描述】:

我有一些代码如下:

char[] separator = { ',' };

String[] idList = m_idsFromRequest.Split(separator);  //m_idsFromRequest="1,2....";
List<string> distinctIdList = idList.Distinct().ToList();
m_distinctIdList = distinctIdList.ToArray();
m_idsFromRequest = string.Join(" ", distinctIdList);

目前 m_idsFromRequest = ["1","2".........."] 就是这样。 我想让它 ["0|1","0|2"........"] 就像在每个元素中附加 "0|" 。我想知道 id 我可以在没有foreach 循环。

【问题讨论】:

  • 仅供参考,您的原始代码可以简化为 m_idsFromRequest = string.Join(" ", m_idsFromRequest.Split(separator).Distinct());,您将避免创建不需要的中间列表和数组。
  • 另外,如果你的字符串两端都有括号,那么 ["1","1"] 之类的东西不会改变,因为 distinct 被应用于 ["1" 和 '"1"] 的值
  • 我一定会调查的。中间数据有一些中间的杂耍,所以我只是提出了整体的东西。此外,我的前辈不允许我接触太多代码。
  • 请注意,下面的答案假设您以1,2,3 之类的字符串开头,而不是["1","2","3"] 之类的字符串,并且不适用于后面的值,因此初始字符串的确切格式是这里很重要。

标签: c# arrays string


【解决方案1】:

您可以使用Select 和String.Join:

var idsPrependedWithZero = m_idsFromRequest.Split(separator)
    .Distinct() // same as in your code
    .Select(id => $"0|{id}");
string result = string.Join(",", idsPrependedWithZero);

【讨论】:

  • 你忘记了Distinct
  • @juharr:OP 在哪里提到它们必须是唯一的?编辑:我明白了。固定
【解决方案2】:
char[] separator = { ',' };
string m_idsFromRequest = "1,2,3,4,5,6";
String[] idList = m_idsFromRequest.Split(separator);  //m_idsFromRequest="1,2....";
List<string> distinctIdList = idList.Distinct().Select(t => "0|" + t).ToList();
m_idsFromRequest = string.Join(",", distinctIdList);

刚刚在 .Distinct() 之后添加了 .Select()。在 .Select 中,您可以转换列表中的每个项目。

除此之外,我还在您的 string.Join 中添加了“,”。因为你希望它通过逗号加入。

【讨论】:

  • @Martin 我已经添加了答案
猜你喜欢
  • 2011-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-05
  • 1970-01-01
  • 2019-10-29
  • 2012-10-02
相关资源
最近更新 更多