【问题标题】:Write code list collection to string in c#在c#中将代码列表集合写入字符串
【发布时间】:2010-10-19 08:57:26
【问题描述】:

大家好 尝试将列表集合字符串转换为单行字符串时出现问题。 但是对于每个项目,我必须使用特定的格式进行编辑。

例子

List<string> items = new List<string>();
string result = string.Empty;

items.Add("First");
items.Add("Second");
items.Add("Last");

result = string.Join(",", items.ToArray());
Console.WriteLine(result); // Display: First,Second,Last

但我希望转换成这样的:

[First],[Second],[Last]

或类似的东西

--First-,--Second-,--Last-

我知道使用 foreach for 循环编写此代码的技术很少。

但它是否可以编写代码只是将列表集合中的所有项目更改为特定的模式字符串。

所以项目集合字符串包含从“First”到“\First/”,或从“Last”到“''Last'”。

注意

【问题讨论】:

  • 能否请您重新表述问题。看了几遍,还是不知道哪里出了问题。
  • 您可以使用初始化列表构造字符串集合(尽管它可能与您的场景不匹配):var items = new List&lt;string&gt;() { "One", "Two", "Three", };。您也不必再转换为数组来使用string.Join。它现在具有此签名的覆盖:public static string Join(string separator, IEnumerable&lt;string&gt; values);

标签: c# string collections coding-style


【解决方案1】:

听起来你在使用 Join 之前想要一个投影:

result = string.Join(",", items.Select(x => "[" + x + "]")
                               .ToArray());

我个人认为这比使用更复杂的分隔符执行连接更清楚。 感觉就像你实际上有 [First][Second][Third] 以逗号连接的项目 - 而不是 FirstSecondThird 以 @ 连接的项目987654328@.

您的第二种形式同样容易实现:

result = string.Join(",", items.Select(x => "--" + x + "-")
                               .ToArray());

请注意,如果您使用的是 .NET 4,则无需调用 ToArray,因为它引入了额外的重载以使 string.Join 更易于使用。

【讨论】:

  • 是的,这段代码是我要找的,写起来更优雅。谢谢。
【解决方案2】:

为什么不

var result = "--" + string.Join("-,--", items.ToArray()) + "--";

var result = "[" + string.Join("],[", items.ToArray()) + "]";

【讨论】:

    【解决方案3】:

    使用join,然后根据需要在前后添加字符:

    result = "[" + string.Join("],[", items.ToArray()) + "]"; 
    

    会得到你的

    [First],[Second],[Last]
    

    【讨论】:

      猜你喜欢
      • 2020-12-26
      • 2017-06-02
      • 2022-08-14
      • 2020-09-12
      • 2023-03-14
      • 2017-03-23
      • 1970-01-01
      • 2021-12-06
      相关资源
      最近更新 更多